接到上一篇:Spring Boot的基础搭建
重写数据源:
druid的基本配置:
这里我们要实现使用druid数据源和配置druid的监控功能。
在pom.xml中dependencies
下添加:
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.0.29</version>
</dependency>
加载完druid包后:把SpringBootStudyApplication拖到com包下因为spring boot的启动扫描时扫描它同类包和下层包的文件,所以我们尽量放在最顶层的包下面。如下:
然后在com下添加包config,用于配置一些框架的信息到spring中,在com下继续添加包utils用来编写工具类和重写一些接口。如下:
在config包添加DruidConfiguration里面代码如下:
package com.config;
import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.support.http.StatViewServlet;
import com.alibaba.druid.support.http.WebStatFilter;
import com.alibaba.druid.support.spring.stat.DruidStatInterceptor;
import org.springframework.aop.Advisor;
import org.springframework.aop.support.DefaultPointcutAdvisor;
import org.springframework.aop.support.JdkRegexpMethodPointcut;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import javax.sql.DataSource;
import java.sql.SQLException;
/**
* Created by onion on 2017-03-28 14:01.
*/
@Configuration
public class DruidConfiguration {
@Bean
public DataSource dataSource(@Value("${spring.datasource.url}") String url,
@Value("${spring.datasource.username}") String username,
@Value("${spring.datasource.password}") String password) {
DruidDataSource druidDataSource = new DruidDataSource();
druidDataSource.setUrl(url);
druidDataSource.setUsername(username);
druidDataSource.setPassword(password);
try {
//开启druid sql防火墙
druidDataSource.setFilters("stat, wall");
} catch (SQLException e) {
e.printStackTrace();
}
return druidDataSource;
}
//配置druid监控结果访问相关配置
@Bean
public ServletRegistrationBean druidServlet() {
ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(new StatViewServlet(), "/druid/*");
servletRegistrationBean.addInitParameter("resetEnable", "true");
servletRegistrationBean.addInitParameter("loginUsername", "druid");
servletRegistrationBean.addInitParameter("loginPassword", "druid");
servletRegistrationBean.addInitParameter("allow", "127.0.0.1");
return servletRegistrationBean;
}
//配置druid监控过滤器
@Bean
public FilterRegistrationBean filterRegistrationBean() {
FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean();
filterRegistrationBean.setFilter(new WebStatFilter());
filterRegistrationBean.addUrlPatterns("/*");
filterRegistrationBean.addInitParameter("exclusions", "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*");
filterRegistrationBean.setOrder(5);
return filterRegistrationBean;
}
//添加aop的advice
@Bean
public DruidStatInterceptor druidStatInterceptor() {
return new DruidStatInterceptor();
}
//添加aop的pointcut
@Bean
public JdkRegexpMethodPointcut jdkRegexpMethodPointcut() {
JdkRegexpMethodPointcut jdkRegexpMethodPointcut = new JdkRegexpMethodPointcut();
jdkRegexpMethodPointcut.setPatterns("com.tgb.service.*");
return jdkRegexpMethodPointcut;
}
//设置默认的aop配置对应的是原来的<aop:advisor>
@Bean
public Advisor druidAdvisor() {
DefaultPointcutAdvisor defaultPointcutAdvisor = new DefaultPointcutAdvisor();
defaultPointcutAdvisor.setPointcut(jdkRegexpMethodPointcut());
defaultPointcutAdvisor.setAdvice(druidStatInterceptor());
return defaultPointcutAdvisor;
}
}
第一个bean中@Value取的是application.properties中的参数,更多参数的配置可以去查一下我这里只是配置了数据库的连接信息,说明一下没配置数据库的驱动类型是因为druid会从url中去读取数据库驱动类型如:mysql中的路径前缀为jdbc:mysql。。sqlserver的前缀为:jdbc:sqlserver。。等等。druid会取第一个冒号后面的字符串去判断你的数据库类型然后去找到对应的数据库驱动。
第二个bean中的addInitParameter是添加初始参数配置对应的是原来web.xml中的init-param标签下的参数,设置了登录信息druid监控页面的信息和只允许本机去访问。
第三个bean是用来监控web资源的。其中addUrlPatterns是设置过滤的请求路径的
更多配置请自行查阅
重新启动服务先访问:http://localhost:8080/allUser.html,在访问http://localhost:8080/druid/
要求我们输入用户名和密码上面配置的都是druid,输入后就可以查看到一些监控信息。
成功后就可以在sql监控中看到我们刚刚执行的sql。<