什么是Druid?
Druid是阿里巴巴开发的,其号称为监控而生的数据源。Druid是目前最好的数据库数据源,它在功能、性能、扩展性方面,都超过其他数据库连接池,比如dbcp、c3p0、BoneCP、Proxool、JBoss DataSource。
在SpringBoot上配置相当简单,只需3步即可。
<dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.1.23</version> </dependency>
# Spring Boot 默认是不注入这些属性值的,需要自己绑定 # druid 数据源专有配置 initialSize: 5 minIdle: 5 maxActive: 20 maxWait: 60000 timeBetweenEvictionRunsMillis: 60000 minEvictableIdleTimeMillis: 300000 validationQuery: SELECT 1 FROM DUAL testWhileIdle: true testOnBorrow: false testOnReturn: false poolPreparedStatements: true # 配置监控统计拦截的filters,stat:监控统计、log4j:日志记录、wall:防御sql注入 filters: stat,wall,log4j maxPoolPreparedStatementPerConnectionSize: 20 useGlobalDataSourceStat: true connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=500
注意:如果允许时报错 java.lang.ClassNotFoundException: org.apache.log4j.Priority, 则导入 log4j 依赖即可,Maven 地址:https://mvnrepository.com/artifact/log4j/log4j
@Configuration public class DruidConfig { @ConfigurationProperties(prefix = "spring.datasource") @Bean public DataSource druidDataSource() { return new DruidDataSource(); } }
Druid 数据源具有监控的功能,并提供了一个 web 界面方便用户查看,类似安装路由器时,druid 也提供了一个默认的 web 页面。
开始配置:(继续在刚创建的DruidConfig中配置)
(暂记能配置的参数都在 ResourceServlet 里 )
需要设置 Druid 的后台管理页面,比如登录账号、密码等,配置后台管理;
// 内置没有web.xml文件,使用 SpringBoot 注册 Servlet 方式配置 @Bean public ServletRegistrationBean statViewServlet() { ServletRegistrationBean bean = new ServletRegistrationBean(new StatViewServlet(), "/druid/*"); // 这些参数可以在StatViewServlet 的父类 ResourceServlet 中找到 Map<String, String> initParams = new HashMap<>(); initParams.put("loginUsername", "admin"); //后台管理界面的登录账号 initParams.put("loginPassword", "123456"); //后台管理界面的登录密码 // 页面允许某用户可以访问 // initParams.put("allow", "localhost"):表示只有本机可以访问 // 第二参数为空或者为null时,表示允许所有访问 initParams.put("allow", ""); // 页面拒绝xxx访问 // initParams.put("xxx", "127.0.0.1"):表示禁止此ip访问 // 设置初始化参数 bean.setInitParameters(initParams); return bean; }
配置完毕后,访问 http://localhost:8080/druid/login.html 进入页面
输入刚才配置的用户名和密码即可登入到druid监控页面
new StatViewServlet()
时,出现了错误,无法被创建出来。ServletRegistration
和MultipartConfigElement
愿世上没有Bug