发表于: 2018-04-06 19:55:04
1 699
今天完成的事情:druid监控实现:
package com.ptteng.config;
import com.alibaba.druid.support.http.StatViewServlet;
import com.alibaba.druid.support.http.WebStatFilter;
import com.ptteng.utils.IPUtil;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.autoconfigure.jdbc.DataSourceBuilder;
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 org.springframework.context.annotation.Primary;
import org.springframework.core.io.DefaultResourceLoader;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor;
import javax.servlet.http.HttpServletRequest;
import javax.sql.DataSource;
@Configuration
public class DruidConfig {
//监控平台URL: http://localhost:8080/druid/index.html
@Bean
public ServletRegistrationBean statViewServle() {
ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(new StatViewServlet(){
@Override
public boolean isPermittedRequest(HttpServletRequest request) {
String remoteAddress = IPUtil.getIpAddr(request);
return isPermittedRequest(remoteAddress);
}
}, "/druid/*");
//白名单,如果没有配置或者为空,则允许所有访问
servletRegistrationBean.addInitParameter("allow", "183.192.36.131,127.0.0.1");
//IP黑名单 (存在共同时,deny优先于allow) : 如果满足deny的即提示:Sorry, you are not permitted to view this page.
//servletRegistrationBean.addInitParameter("deny", "127.0.0.1");
//登录查看信息的账号密码.
servletRegistrationBean.addInitParameter("loginUsername", "druid");
servletRegistrationBean.addInitParameter("loginPassword", "12345678");
//是否能够重置数据.
servletRegistrationBean.addInitParameter("resetEnable", "false");
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;
}
@Bean
PersistenceExceptionTranslationPostProcessor persistenceExceptionTranslationPostProcessor() {
return new PersistenceExceptionTranslationPostProcessor();
}
//配置数据库的基本链接信息
@Bean(name = "dataSource")
@Primary
@ConfigurationProperties(prefix = "spring.datasource") //可以在application.properties中直接导入
public DataSource dataSource() {
return DataSourceBuilder.create().type(com.alibaba.druid.pool.DruidDataSource.class).build();
}
@Bean
public SqlSessionFactory SqlSessionFactory(@Qualifier("dataSource") DataSource dataSource)
throws Exception {
final SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
sessionFactory.setDataSource(dataSource);
//这里不方便改,干脆在mapper文件里面写全名得了
//sessionFactory.setTypeAliasesPackage("com.ptteng.domain");
sessionFactory.setMapperLocations(new PathMatchingResourcePatternResolver()
.getResources("classpath:mapper/*.xml"));
sessionFactory.setConfigLocation(
new DefaultResourceLoader().getResource("classpath:mybatis/mybatis-config.xml"));
return sessionFactory.getObject();
}
}
明天计划的事情:继续学习boot
遇到的问题:druid整合log4j2
收获:熟悉了boot的配置方式,@configuration类
评论