发表于: 2018-04-06 19:55:04

1 696


今天完成的事情: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类


返回列表 返回列表
评论

    分享到