赞
踩
1、导入pom依赖
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.17</version>
</dependency>
2、编写配置类
通过localhost:8081/druid访问druid来监控http://localhost:8081/getCount请求
@Configuration public class MyConfig { @ConfigurationProperties("spring.datasource") @Bean public DataSource myDataSource() throws SQLException { DruidDataSource druidDataSource = new DruidDataSource(); //绑定SQL监控和SQL防火墙功能已经开启日志 // druidDataSource.setFilters("stat, wall, log4j"); // druidDataSource.setUrl(); return new DruidDataSource(); } /** * 配置druid的监控页功能 **/ @Bean public ServletRegistrationBean statViewServlet(){ StatViewServlet viewServlet = new StatViewServlet(); //通过http://localhost:8081/druid访问druid ServletRegistrationBean<StatViewServlet> registrationBean = new ServletRegistrationBean(viewServlet, "/druid/*"); // //加入druid登录账号和密码 // registrationBean.addInitParameter("loginUsername", "123"); // registrationBean.addInitParameter("loginPassword", "123"); return registrationBean; } /** * 配置druid的web应用功能 **/ @Bean public FilterRegistrationBean webStatFilter(){ WebStatFilter webStatFilter = new WebStatFilter(); FilterRegistrationBean<WebStatFilter> registrationBean = new FilterRegistrationBean(webStatFilter); //拦截所有请求 registrationBean.setUrlPatterns(Arrays.asList("/*")); //排除某些请求 registrationBean.addInitParameter("exclusions", "*.js, *.css, /druid/*"); return registrationBean; } }
通过源码可知数据库连接池的配置,是自己容器中没有DataSource才自动配置的,底层配置好的连接池是:HikariDataSource
@Configuration(proxyBeanMethods = false)
@Conditional(PooledDataSourceCondition.class)
@ConditionalOnMissingBean({ DataSource.class, XADataSource.class })
@Import({ DataSourceConfiguration.Hikari.class, DataSourceConfiguration.Tomcat.class,
DataSourceConfiguration.Dbcp2.class, DataSourceConfiguration.OracleUcp.class,
DataSourceConfiguration.Generic.class, DataSourceJmxConfiguration.class })
protected static class PooledDataSourceConfiguration
3、通过@ConfigurationProperties注解配置类的数据源会覆盖原有jdbc数据源,也可以通过在配置类中druidDataSource.setUrl()等方法来配置账号密码地址等
spring:
datasource:
driver-class-name: com.mysql.jdbc.Driver
password: root
url: jdbc:mysql://127.0.0.1:3306/bbb?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&autoReconnect=true
username: root
filters: stat, wall, log4j
4、请求路径
@Controller
public class UserController {
@Autowired
private JdbcTemplate jdbcTemplate;
@ResponseBody
@RequestMapping(value = "/getCount", method = RequestMethod.GET)
public String getCount(){
Long l = jdbcTemplate.queryForObject("select count(*) from t_book", Long.class);
return l.toString();
}
}
实现图如下

druid官方github地址
https://github.com/alibaba/druid
1、导入pom依赖
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.17</version>
</dependency>
自动配置项 DruidDataSourceAutoConfigure源码
@Configuration
@ConditionalOnClass({DruidDataSource.class})
@AutoConfigureBefore({DataSourceAutoConfiguration.class})
@EnableConfigurationProperties({DruidStatProperties.class, DataSourceProperties.class})
@Import({DruidSpringAopConfiguration.class, DruidStatViewServletConfiguration.class, DruidWebStatFilterConfiguration.class, DruidFilterConfiguration.class})
public class DruidDataSourceAutoConfigure
● DruidStatProperties.class,通过spring.datasource.druid与yaml配置文件绑定

● DataSourceProperties.class,通过spring.datasource与yaml配置文件绑定

● DruidSpringAopConfiguration.class, 监控SpringBean的;配置项:spring.datasource.druid.aop-patterns
● DruidStatViewServletConfiguration.class, 监控页的配置:spring.datasource.druid.stat-view-servlet;
● DruidWebStatFilterConfiguration.class, web监控配置;spring.datasource.druid.web-stat-filter;
● DruidFilterConfiguration.class}) 所有Druid自己filter的配置

2、yaml配置
spring: datasource: driver-class-name: com.mysql.jdbc.Driver password: admin url: jdbc:mysql://127.0.0.1:3306/bbb?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&autoReconnect=true username: 123456 filters: stat, wall druid: filters: stat,wall #底层开启功能,stat(sql监控),wall(防火墙) filter: #对上面filters里面的属性的详细配置 stat: slow-sql-millis: 1000 logSlowSql: true enabled: true wall: enabled: true config: drop-table-allow: false aop-patterns: com.example.demo.* #监控SpringBean stat-view-servlet: #配置监控页功能 login-username: 123 login-password: 123 enabled: true reset-enable: false web-stat-filter: #监控web enabled: true exclusions: '*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*' url-pattern: /*
3、请求路径
@Controller
public class UserController {
@Autowired
private JdbcTemplate jdbcTemplate;
@ResponseBody
@RequestMapping(value = "/getCount", method = RequestMethod.GET)
public String getCount(){
Long l = jdbcTemplate.queryForObject("select count(*) from t_book", Long.class);
return l.toString();
}
}
SpringBoot配置示例
https://github.com/alibaba/druid/tree/master/druid-spring-boot-starter
配置项列表https://github.com/alibaba/druid/wiki/DruidDataSource%E9%85%8D%E7%BD%AE%E5%B1%9E%E6%80%A7%E5%88%97%E8%A1%A8
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。