接下来我将为您讲解“SpringBoot如何整合Druid数据源”的完整攻略。
1. 添加Druid依赖
首先,我们需要在pom.xml中添加Druid的依赖:
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.2.6</version>
</dependency>
2. 添加Druid配置
在application.yml或者application.properties中添加Druid的配置,包括数据库的连接信息、Druid监控界面的配置信息和其他的自定义配置信息,示例如下:
spring:
datasource:
username: root
password: 123456
url: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&autoReconnect=true&failOverReadOnly=false&maxReconnects=10&allowMultiQueries=true&useSSL=false
driver-class-name: com.mysql.jdbc.Driver
type: com.alibaba.druid.pool.DruidDataSource
druid:
initial-size: 5
max-active: 20
min-idle: 5
log-filter:
merge-sql: true
slow-sql-millis: 1000
web-stat-filter:
enabled: true
url-pattern: /druid/*
exclusions: /static/*
session-stat-max-count: 1000
slow-sql-millis: 5000
stat-view-servlet:
enabled: true
url-pattern: /druid/*
login-username: admin
login-password: admin
# 自定义配置
pool-prepared-statements: true
max-pool-prepared-statement-per-connection-size: 20
validation-query: SELECT 1 FROM DUAL
test-on-borrow: false
test-on-return: false
test-while-idle: true
time-between-eviction-runs-millis: 1000
min-evictable-idle-time-millis: 60000
remove-abandoned: true
remove-abandoned-timeout-millis: 60000
log-abandoned: true
3. 配置数据源
配置数据源时,需要引用Druid的数据源,在application.yml或者application.properties中添加如下配置:
spring:
datasource:
type: com.alibaba.druid.pool.DruidDataSource
4. 配置事务
配置事务时,需要使用Druid提供的Spring的事务管理器,将其配置到Spring的事务管理器中,代码如下:
@Configuration
@EnableTransactionManagement
public class DataSourceConfig {
@Bean
@Primary
public DataSource dataSource() {
DruidDataSource dataSource = new DruidDataSource();
// 设置数据源属性
return dataSource;
}
@Bean
public PlatformTransactionManager txManager() {
return new DataSourceTransactionManager(dataSource());
}
}
5. 示例1:使用Druid监控界面
在使用Druid监控界面时,需要增加servlet和filter,代码如下:
@Configuration
public class DruidConfig {
@Bean
public ServletRegistrationBean druidServlet() {
ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(new StatViewServlet(), "/druid/*");
// IP白名单
servletRegistrationBean.addInitParameter("allow", "127.0.0.1");
// IP黑名单(共同存在时,deny优先于allow)
servletRegistrationBean.addInitParameter("deny", "192.168.0.100");
// 控制台管理用户
servletRegistrationBean.addInitParameter("loginUsername", "admin");
servletRegistrationBean.addInitParameter("loginPassword", "admin");
// 是否能够重置数据 禁用HTML页面上的“Reset All”功能
servletRegistrationBean.addInitParameter("resetEnable", "false");
return servletRegistrationBean;
}
@Bean
public FilterRegistrationBean druidFilter() {
FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(new WebStatFilter());
// 过滤器拦截的url
filterRegistrationBean.addUrlPatterns("/*");
// 不拦截的url
filterRegistrationBean.addInitParameter("exclusions", "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*");
// 监控maven连接
filterRegistrationBean.addInitParameter("profileEnable", "true");
return filterRegistrationBean;
}
}
6. 示例2:使用Druid的连接池
使用Druid的连接池时,可以对连接池的一些配置进行设置,代码如下:
@Configuration
public class DataSourceConfig {
@Bean
public DataSource dataSource() {
DruidDataSource dataSource = new DruidDataSource();
// 设置数据源属性
dataSource.setUrl("jdbc:mysql://localhost:3306/test");
dataSource.setUsername("root");
dataSource.setPassword("root");
// 初始化连接数
dataSource.setInitialSize(5);
// 最小空闲数
dataSource.setMinIdle(5);
// 最大连接数
dataSource.setMaxActive(20);
// 获取连接时的最大等待时间,单位毫秒
dataSource.setMaxWait(60000);
// 间隔多久进行检测,关闭空闲连接,单位毫秒
dataSource.setTimeBetweenEvictionRunsMillis(60000);
// 连接在池中最小生存的时间,单位毫秒
dataSource.setMinEvictableIdleTimeMillis(300000);
// 连接池配置,通过这些属性可以监控数据库连接
dataSource.setPoolPreparedStatements(true);
dataSource.setMaxPoolPreparedStatementPerConnectionSize(20);
dataSource.setValidationQuery("SELECT 1");
dataSource.setTestOnBorrow(false);
dataSource.setTestOnReturn(false);
dataSource.setTestWhileIdle(true);
dataSource.setRemoveAbandoned(true);
dataSource.setRemoveAbandonedTimeoutMillis(180000);
dataSource.setLogAbandoned(true);
dataSource.setFilters("stat");
return dataSource;
}
@Bean(name = "jdbcTemplate")
public JdbcTemplate jdbcTemplate(@Qualifier("dataSource") DataSource dataSource) {
return new JdbcTemplate(dataSource);
}
}
以上内容就是整合Druid数据源的完整攻略,希望对您有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:SpringBoot详解如何进行整合Druid数据源 - Python技术站