整合Druid数据源
Druid是阿里巴巴开源平台上一个数据库连接池实现,结合了C3P0,DBCP,PROXOOL等DB池的优点,同时也加入了日志监控。
pom依赖
<dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.1.21</version> </dependency>
yml数据源配置
spring: datasource: username: root password: root1 url: jdbc:mysql://127.0.0.1:3306/cardata?serverTime=UTC&useUnicode=true&characterEncoding=utf-8 driver-class-name: com.mysql.cj.jdbc.Driver #指定数据源类型 type: com.alibaba.druid.pool.DruidDataSource # 下面为Druid连接池的专有的一些设置,应用到上面所有数据源中, # 初始化大小,最小,最大 initialSize: 5 minIdle: 5 maxActive: 20 maxWait: 60000 timeBetweenEvictionRunsMillis: 60000 minEvictableIdleTimeMillis: 300000 validationQuery: SELECT 1 FROM DUAL testWhileIdle: true testOnBorrow: false testOnReturn: false # 打开PSCache,并且指定每个连接上PSCache的大小 poolPreparedStatements: true # 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙 maxPoolPreparedStatementPerConnectionSize: 20 #配置监控统计拦截的filters,stat:监控统计,log4j日志记录(**pom需导入log4j依赖**),wall:防御sql注入 filters: stat,wall,log4j useGlobalDataSourceStat: true # 通过connectProperties属性来打开mergeSql功能;慢SQL记录 connectProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
DruidConfig 对应Bean.xml
@Configuration public class DruidConfig { // 将yml和当前配置文件进行绑定 @ConfigurationProperties(prefix = "spring.datasource") @Bean public DataSource druidDataSource() { return new DruidDataSource(); } // 后台监控: 相当于配置web.xml // 因为springboot内置了servlet容器,所以没有web.xml,替代方法ServletRegistrationBean @Bean public ServletRegistrationBean StatViewServlet() { // /druid/* 配置访问druid路径 ServletRegistrationBean bean = new ServletRegistrationBean(new StatViewServlet(), "/druid/*"); // 配置后台账号密码 Map<String, String> initParameters = new HashMap<>(); // 增加配置, 登录账号 固定key initParameters.put("loginUsername", "admin"); initParameters.put("loginPassword", "123456"); // 允许谁可以访问 initParameters.put("allow", ""); // 设置初始化参数 bean.setInitParameters(initParameters); return bean; } @Bean public FilterRegistrationBean webStarFilter() { FilterRegistrationBean bean = new FilterRegistrationBean(); bean.setFilter(new WebStatFilter()); // 可以过滤那些请求 Map<String, String> initParameters = new HashMap<>(); // 这些东西不进行统计 initParameters.put("exclusions", "*.js,*.css,/druid/*"); bean.setInitParameters(initParameters); return bean; } }