Druid不仅是数据库连接池,还提供强大的监控和扩展功能.
Druid监控配置
- SSM项目
①添加Maven依赖
②web.xml中进行配置<dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.0.1</version> </dependency>
<filter> <filter-name>DruidWebStatFilter</filter-name> <filter-class>com.alibaba.druid.support.http.WebStatFilter</filter-class> <init-param> <param-name>exclusions</param-name> <param-value>*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*</param-value> </init-param> </filter> <!--druid监控页面 --> <servlet> <servlet-name>DruidStatView</servlet-name> <servlet-class>com.alibaba.druid.support.http.StatViewServlet</servlet-class> <init-param> <!-- 不允许清空统计数据 --> <param-name>resetEnable</param-name> <param-value>false</param-value> </init-param> <init-param> <!-- 用户名 --> <param-name>loginUsername</param-name> <param-value>yourname</param-value> </init-param> <init-param> <!-- 密码 --> <param-name>loginPassword</param-name> <param-value>yourpassword</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>DruidStatView</servlet-name> <url-pattern>/druid/*</url-pattern> </servlet-mapping> <!--druid监控页面 -->
重新构建工程并重启项目,访问/druid即可进入到druid监控面板的登录页面,输入在web.xml中配置的账号和密码即可进入监控后台
Spring Boot项目
①添加Maven依赖
同1.
②修改application.yml文件spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: ---------------- username: --- password: --- #druid配置 type: com.alibaba.druid.pool.DruidDataSource #数据源其他配置 #初始化时建立物理连接的个数。初始化发生在显示调用init方法,或者第一次getConnection时 initialSize: 5 #最小连接池数量 minIdle: 5 #最大连接池数量 maxActive: 20 #获取连接时最大等待时间,单位毫秒。配置了maxWait之后,缺省启用公平锁,并发效率会有所下降,如果需要可以通过配置useUnfairLock属性为true使用非公平锁 maxWait: 60000 #1) Destroy线程会检测连接的间隔时间2) testWhileIdle的判断依据,详细看testWhileIdle属性的说明 timeBetweenEvictionRunsMillis: 60000 minEvictableIdleTimeMillis: 300000 #用来检测连接是否有效的sql,要求是一个查询语句。如果validationQuery为null,testOnBorrow、testOnReturn、testWhileIdle都不会其作用。 validationQuery: SELECT 1 FROM DUAL #申请连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能。 testOnBorrow: false #归还连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能 testOnReturn: false #是否缓存preparedStatement,也就是PSCache。PSCache对支持游标的数据库性能提升巨大,比如说oracle。在mysql下建议关闭。 poolPreparedStatements: false maxPoolPreparedStatementPerConnectionSize: 20 #属性类型是字符串,通过别名的方式配置扩展插件,常用的插件有:监控统计用的filter:stat日志用的filter:log4j防御sql注入的filter:wall filters: stat,wall #合并多个DruidDataSource的监控数据 useGlobalDataSourceStat: true #通过connectProperties属性来打开mergeSql功能;慢SQL记录 connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=500
③配置Druid
@Configuration public class DruidConfig { @ConfigurationProperties(prefix="spring.datasource") @Bean public DataSource druid(){ return new DruidDataSource(); } /** * 注册一个StatViewServlet * @return */ @Bean public ServletRegistrationBean statViewServlet(){ ServletRegistrationBean bean=new ServletRegistrationBean(new StatViewServlet(),"/druid/*"); Map<String, String> initParams=new HashMap<>(); initParams.put("loginUsername","admin"); initParams.put("loginPassword","123456"); bean.setInitParameters(initParams); return bean; } /** * 注册一个filterRegistrationBean * @return */ @Bean public FilterRegistrationBean webStatFilter() { FilterRegistrationBean bean = new FilterRegistrationBean(); bean.setFilter(new WebStatFilter()); Map<String, String> initParams=new HashMap<>(); initParams.put("exclusions", "*.js,*.css,/druid/*"); bean.setInitParameters(initParams); bean.setUrlPatterns(Arrays.asList("/*")); return bean; } }
重启项目,访问/druid,输入配置中的账号密码进入监控后台.