1、 配置自定义数据源——Druid
下面以Mysql为例:首先删去对h2的依赖,增加对mysql以及Druid的依赖。
<!--<dependency>-->
<!--<groupId>com.h2database</groupId>-->
<!--<artifactId>h2</artifactId>-->
<!--<scope>runtime</scope>-->
<!--</dependency>-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.6</version>
</dependency>
springboot中可以配置application.yml配置文件已达到配饰数据源的效果。
spring:
datasource:
username: root
password: root
url: jdbc:mysql://localhost:3306/test?serverTimezone=UTC&useSSL=true
driver-class-name: com.mysql.jdbc.Driver
type: com.alibaba.druid.pool.DruidDataSource
# 初始化大小,最小,最大
initialSize: 1
minIdle: 3
maxActive: 20
# 配置获取连接等待超时的时间
maxWait: 60000
# 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
timeBetweenEvictionRunsMillis: 60000
# 配置一个连接在池中最小生存的时间,单位是毫秒
minEvictableIdleTimeMillis: 30000
validationQuery: select 'x'
testWhileIdle: true
testOnBorrow: false
testOnReturn: false
# 打开PSCache,并且指定每个连接上PSCache的大小
poolPreparedStatements: true
maxPoolPreparedStatementPerConnectionSize: 20
# 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
filters: stat,wall,slf4j
# 通过connectProperties属性来打开mergeSql功能;慢SQL记录
connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
# 合并多个DruidDataSource的监控数据
#useGlobalDataSourceStat: true
#schema:
#- classpath:department.sql
#initialization-mode: always
type: com.alibaba.druid.pool.DruidDataSource
通过这句配置将druid连接池引入到我们的配置中,spring会尽可能判断类型是什么,然后根据情况去匹配驱动类。
2、将druid配置放到容器中
配置完成之后我们需要给springBoot注入一个自己的配置;
@Configuration
public class DruidConfig {
@Bean
@ConfigurationProperties(prefix = "spring.datasource")
//注意这里的dataSource 导的是这个:javax.sql.DataSource;
public DataSource getDataSource(){
return new DruidDataSource();
}
}
以前通过@value赋值比较麻烦,然后SpringBoot为我们提供了下面这个注解:
@ConfigurationProperties(prefix = “spring.datasource”)
通过这个注解我们可以把配置文件中的配置全部自动装配过来;
3、配置druid监控类和过滤器
配置druid监控类:
/**
* druid数据源状态监控.
* @author wcy
*/
@WebServlet(urlPatterns="/druid/*",
initParams={
@WebInitParam(name="allow",value=""),// IP白名单(没有配置或者为空,则允许所有访问)
@WebInitParam(name="deny",value=""),// IP黑名单 (存在共同时,deny优先于allow)
@WebInitParam(name="loginUsername",value="admin"),// 用户名
@WebInitParam(name="loginPassword",value="admin"),// 密码
@WebInitParam(name="resetEnable",value="true")// 禁用HTML页面上的“Reset All”功能
}
)
public class DruidStatViewServlet extends StatViewServlet {
private static final long serialVersionUID = 1L;
}
配置druid过滤器:
/**
* druid过滤器.
*/
@WebFilter(filterName="druidWebStatFilter",
urlPatterns="/*",
initParams={
@WebInitParam(name="exclusions",value="*.js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico,/druid/*")//忽略资源
}
)
public class DruidStatFilter extends WebStatFilter {
}
在启动类上我们需要加上这个注解:@ServletComponentScan
4、测试druid
打开网址:
访问:http://localhost:8080/druid/login.html
出现登录界面就说明druid配置好了;
然后输入自己设置的账号密码进入druid界面