springboot中单数据源下druid的使用
2018-06-04 本文已影响13人
墨色尘埃
pom.xml中添加依赖
<!-- druid监控依赖 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.0.31</version>
</dependency>
<!--或者这个依赖也可以-->
<!--<dependency>-->
<!--<groupId>com.alibaba</groupId>-->
<!--<artifactId>druid-spring-boot-starter</artifactId>-->
<!--<version>1.1.1</version>-->
<!--</dependency>-->
下面有两种方式进行配置,使用的时候任选一种:
① DruidConfig+DruidStatFilter+DruidStatViewServlet
DruidConfig,单数据源下需要返回new DruidDataSource();
package com.jsptpd.portal.common.config.druid;
import com.alibaba.druid.pool.DruidDataSource;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import javax.sql.DataSource;
/**
* Created by JIHY on 2017/6/20.
* 以上配置的监控方式是使用了原生的servlet,filter方式,然后通过@ServletComponentScan进行启动扫描包的方式进行处理的,你会发现我们的servlet,filter根本没有任何的编码。
* 在这里我们将使用另外一种方式进行处理:使用代码注册Servlet:
* 编写类:com.kfit.base.servlet.DruidConfiguration :
*/
@Configuration
public class DruidConfig {
private static final Logger logger = LoggerFactory.getLogger(DruidConfig.class);
// @Bean("druid-stat-interceptor")
// public DruidStatInterceptor interceptor() {
// return new DruidStatInterceptor();
// }
//
//
// @Bean
// public SpringIbatisBeanTypeAutoProxyCreator proxy() {
// SpringIbatisBeanTypeAutoProxyCreator beanTypeAutoProxyCreator = new SpringIbatisBeanTypeAutoProxyCreator();
// beanTypeAutoProxyCreator.setInterceptorNames("druid-stat-interceptor");
// return beanTypeAutoProxyCreator;
// }
//单数据源下需要返回new DruidDataSource();
// @Bean
@Bean(destroyMethod = "close", initMethod = "init")
@ConfigurationProperties(prefix = "spring.datasource")
public DataSource druidDataSource() {
return new DruidDataSource();
}
}
DruidStatFilter
package com.jsptpd.portal.common.config.druid;
import com.alibaba.druid.support.http.WebStatFilter;
import org.springframework.stereotype.Component;
import javax.servlet.annotation.WebFilter;
import javax.servlet.annotation.WebInitParam;
/**
* 配置监控拦截器
* druid监控拦截器
* @ClassName: DruidStatFilter
* @author linge
* @date 2017年7月24日 上午10:53:40
*/
@Component
@WebFilter(filterName="druidWebStatFilter",urlPatterns="/*",
initParams={
@WebInitParam(name="exclusions",value="*.js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico,/druid/*")// 忽略资源
})
public class DruidStatFilter extends WebStatFilter {
}
DruidStatViewServlet
package com.jsptpd.portal.common.config.druid;
import com.alibaba.druid.support.http.StatViewServlet;
import javax.servlet.annotation.WebInitParam;
import javax.servlet.annotation.WebServlet;
/**
* druid监控视图配置
* @ClassName: DruidStatViewServlet
* @author linge
* @date 2017年7月24日 上午10:54:27
*/
@SuppressWarnings("serial")
@WebServlet(urlPatterns = "/druid/*",
initParams={
// @WebInitParam(name="allow",value="192.168.16.110,127.0.0.1"),// IP白名单 (没有配置或者为空,则允许所有访问)
// @WebInitParam(name="deny",value="192.168.16.111"),// IP黑名单 (存在共同时,deny优先于allow)
@WebInitParam(name="loginUsername",value="huangjihai"),// 用户名
@WebInitParam(name="loginPassword",value="huangjihai"),// 密码
@WebInitParam(name="resetEnable",value="false")// 禁用HTML页面上的“Reset All”功能
})
public class DruidStatViewServlet extends StatViewServlet {
}
② 只是用DruidConfiguration一个类,效果相当于方法一
DruidConfiguration
package com.jsptpd.portal.common.config.druid;
import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.support.http.StatViewServlet;
import com.alibaba.druid.support.http.WebStatFilter;
import org.springframework.boot.context.properties.ConfigurationProperties;
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;
/**
* Created by HASEE on 2018/5/31 15:36
* 等同于DruidConfig+DruidStatFilter+DruidStatViewServlet
* 如果使用了DruidConfiguration那么就不要使用DruidConfig
* 只需注释掉@Configuration即可
* <p>
* * 以上配置的监控方式是使用了原生的servlet,filter方式,然后通过@ServletComponentScan进行启动扫描包的方式进行处理的,你会发现我们的servlet,filter根本没有任何的编码。
* 在这里我们将使用另外一种方式进行处理:使用代码注册Servlet:
* 编写类:com.kfit.base.servlet.DruidConfiguration :
*/
@Configuration
public class DruidConfiguration {
@Bean(destroyMethod = "close", initMethod = "init")
@ConfigurationProperties(prefix = "spring.datasource")
public DataSource druidDataSource() {
DruidDataSource druidDataSource = new DruidDataSource();
return druidDataSource;
}
/**
* 注册一个StatViewServlet
*
* @return
*/
@Bean
public ServletRegistrationBean druidStatViewServlet() {
//org.springframework.boot.context.embedded.ServletRegistrationBean提供类的进行注册.
ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(new StatViewServlet(),
"/druid/*");
//添加初始化参数:initParams
//白名单:
servletRegistrationBean.addInitParameter("allow", "127.0.0.1");
//IP黑名单 (存在共同时,deny优先于allow) : 如果满足deny的话提示:Sorry, you are not permitted to view this page.
// servletRegistrationBean.addInitParameter("deny", "192.168.1.73");
//登录查看信息的账号密码.
servletRegistrationBean.addInitParameter("loginUsername", "huangjihai");
servletRegistrationBean.addInitParameter("loginPassword", "123456");
//是否能够重置数据.
servletRegistrationBean.addInitParameter("resetEnable", "false");
return servletRegistrationBean;
}
/**
* 注册一个:filterRegistrationBean
*
* @return
*/
@Bean
public FilterRegistrationBean druidStatFilter() {
FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(new WebStatFilter());
//添加过滤规则.
filterRegistrationBean.addUrlPatterns("/*");
//添加不需要忽略的格式信息.
filterRegistrationBean.addInitParameter("exclusions", "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*");
return filterRegistrationBean;
}
}