Springboot Druid 相关配置以及一些问题的处理

Druid 是阿里提供的比较专业的可视化web、DB监控工具,基于标准SpringWeb的集成方式,Druid的官网手册写的非常明晰了,本人在使用SpringBoot进行集成的时候,遇到了一些问题,并且扎到了解决方案。

1. 搭建SpringBoot的基础框架,本人这里配置了Mysql数据库、Web(这个不是本文重点)

2. 引入Druid

		<dependency>
			<groupId>com.alibaba</groupId>
			<artifactId>druid</artifactId>
			<version>1.0.29</version>
		</dependency>

3. 增加Servlet

@WebServlet(urlPatterns = "/druid/*",
			initParams = {
					@WebInitParam(name = "loginUsername", value = "druid"),
					@WebInitParam(name = "loginPassword", value = "druid"),
					@WebInitParam(name = "resetEnable", value = "false"),
				}
		)
public class DruidStatView extends StatViewServlet {
	private static final long serialVersionUID = 1L;
}

   这里指定了用户名和密码都是druid

4. 启动类增加对Servlet的扫描,@ServletComponentScan,默认情况下该注释扫描启动类所在包及其所有子包,可通过basePackages、basePackageClasses 重新指定

5. 增加 Filter

@WebFilter(urlPatterns = "/*",
			initParams = {
					@WebInitParam(name = "exclusions", value = "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*"),
					
			}
		)
public class DruidWebStatFilter extends WebStatFilter{

}

6. 配置DB,这里使用了yml格式的配置文件

spring:
    datasource:
        type: com.alibaba.druid.pool.DruidDataSource
        url: jdbc:mysql://${mysql.host}:${mysql.port}/${mysql.name}
        username: ${mysql.username}
        password: ${mysql.password}
        filters: stat,wall,log4j

注意:type: com.alibaba.druid.pool.DruidDataSource,可以不指定driverClassName,Druid会自动匹配

7.  到此,Druid 的基本配置已经好了,启动应用,访问http://localhost:8080/druid 输入用户名和密码之后,可以看到相关界面了。但是这里有几个问题:

    1) 【SQL监控】没有起作用,表现是 【数据源】标签下的【* filter类名】没有信息

    2) 【Spring监控】没有内容,(这个是没有配置)

8. 【Spring监控】的配置

	@Bean
	public DruidStatInterceptor druidStatInterceptor() {
		return new DruidStatInterceptor();
	}

	@Bean
	public JdkRegexpMethodPointcut druidStatPointcut() {
		JdkRegexpMethodPointcut druidStatPointcut = new JdkRegexpMethodPointcut();
		String patterns = "com.lsc.learn.spring.druid.*";
		druidStatPointcut.setPatterns(patterns);
		return druidStatPointcut;
	}

	@Bean
	public Advisor druidStatAdvisor() {
		return new DefaultPointcutAdvisor(druidStatPointcut(), druidStatInterceptor());
	}

9. 【SQL监控】的配置(本文重点)

	@Bean
	@ConfigurationProperties(prefix = "spring.datasource")
	public DataSource druidDataSource() {
		return new DruidDataSource();
	}

即需要明确写明DataSource,具体什么原因就不清楚了,还望了解的大神讲解一下。 

10. 这里只讲述了如何在springboot中集成druid,其他druid的内容请参照Druid的官方手册

猜你喜欢

转载自flashsnow.iteye.com/blog/2371089
今日推荐