druid
druid是一个关系型数据库连接池,它是阿里巴巴的一个开源项目。druid的功能很强大,支持所有JDBC兼容的数据库,报货Oracle,mysql,Derby,PostgreSQL,SQLServer,H2等等。druid还提供了完善的监控模块,实时的监控数据库连接池,sql的执行状态,事务的状态,sql是否在事务中执行,另外还有一些附加的功能,例如spring boot 项目中的controller中的uri的访问情况。根据此监控可以进行sql定向优化,功能强大。
如何在spring中使用druid
-
增加druid的依赖
可以从http://mvnrepository.com/中查找duird,然后找到合适的版本。<dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.0.24</version> </dependency>
-
使用DruidDataSource
在代码中使用DruidDataSource,有两种形式,第一种,在yaml中增加配置spring: datasource: type:com.alibaba.druid.pool.DruidDataSource driver-class-name:com.mysql.jdbc.Driver
第二种也是我经常用的一种,比较灵活,直接用@Configuration注入bean-DruidDataSource,代码如下
@Bean public DataSource dataSource() { DruidDataSource dataSource = new DruidDataSource(); dataSource.setDriverClassName("com.mysql.jdbc.Driver"); dataSource.setUrl(url); dataSource.setUsername(username); dataSource.setPassword(password); dataSource.setMaxActive(maxActive); dataSource.setInitialSize(initialSize); try { dataSource.setFilters("stat,wall,log4j"); } catch (SQLException e) { //do nothing } dataSource.setMaxWait(maxWait); dataSource.setMinIdle(minIdle); return dataSource; }
dataSource中的属性值比如url,username等都通过ConfigurationProperties注解从配置中读取。其中 dataSource.setFilters(“stat,wall,log4j”);是配置监控统计拦截的filters,如果去掉后监控界面sql将无法统计。
- 开启druid的监控功能
很简单就可以开启druid的监控功能,只需要定义监控服务器和过滤器,启动服务,然后就可以开启。在spring boot项目中增加@Configuration类,类名可以自行定义。@Configuration public class DruidConf { @Bean public ServletRegistrationBean statViewServlet() { ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(new StatViewServlet(), "/druid/*"); /*servletRegistrationBean.addInitParameter("allow", "192.168.1.3"); //白名单IP*/ servletRegistrationBean.addInitParameter("loginUsername", "admin"); servletRegistrationBean.addInitParameter("loginPassword", "123456"); return servletRegistrationBean; } @Bean public FilterRegistrationBean statFilter() { FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(new WebStatFilter()); filterRegistrationBean.addUrlPatterns("/*"); filterRegistrationBean.addInitParameter("exclusions", "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*"); return filterRegistrationBean; }
}
然后通过http://服务ip:端口/druid/index.html即可打开页面,登陆的用户名和密码就是代码中写的用户名和密码。
功能十分强大,阿里巴巴实力不容置疑~~~~源码可以直接下载,在https://github.com/alibaba/druid上