zoukankan      html  css  js  c++  java
  • springboot + druid

    一、公司项目是这样配置的

    1. 拦截器

    /**
     * 配置监控拦截器
     * druid监控拦截器
     */
    @WebFilter(filterName = "druidWebStatFilter", urlPatterns = "/*", initParams = {
            @WebInitParam(name = "exclusions", value = "*.js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico,/druid/*"),// 忽略资源
    })
    public class DruidStatFilter extends WebStatFilter {
    }

    2. 视图配置

    /**
     * druid监控视图配置
     */
    @WebServlet(urlPatterns = "/druid/*", initParams = {
            @WebInitParam(name = "allow", value = ""),// IP白名单 (没有配置或者为空,则允许所有访问)
            //@WebInitParam(name = "deny", value = ""),// IP黑名单 (存在共同时,deny优先于allow)
            @WebInitParam(name = "loginUsername", value = "ledi"),// 用户名
            @WebInitParam(name = "loginPassword", value = "123456"),// 密码
            @WebInitParam(name = "resetEnable", value = "true")// 禁用HTML页面上的“Reset All”功能
    })
    public class DruidStatViewServlet extends StatViewServlet {
        
    }

    3. yml配置

    spring:
      datasource:
        type: com.alibaba.druid.pool.DruidDataSource
        url: jdbc:mysql://192.168.8.168/16_ledi_platform?useUnicode=true&characterEncoding=utf-8
        username: root
        password: 123456
        driverClassName: org.mariadb.jdbc.Driver
        initialSize: 5
        minIdle: 5
        maxActive: 20
        maxWait: 60000
        timeBetweenEvictionRunsMillis: 60000
        minEvictableIdleTimeMillis: 300000
        validationQuery: SELECT 1 FROM DUAL
        testWhileIdle: true
        testOnBorrow: false
        exceptionSorter: true
        testOnReturn: false
        poolPreparedStatements: true
        filters: stat,wall,log4j
        maxPoolPreparedStatementPerConnectionSize: 20
        connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis:500
        useGlobalDataSourceStat: true
        filter:
          stat:
            log-slow-sql: true
            slow-sql-millis: 1000
            merge-sql: true
          wall:
            config:
              multi-statement-allow: true

    二、个人项目(Spring-boot-web2)是这样配置的

    1. Druid配置类

    /*
    开启监控功能:
    1. 定义监控服务器
    2. 定义过滤器
    目前Spring Boot中默认支持的连接池有dbcp,dbcp2, tomcat, hikari三种连接池。
    由于Druid暂时不在Spring Bootz中的直接支持,故需要进行配置信息的定制:
     */
    @Configuration
    public class DruidConfiguration {
        private static final Logger logger = LoggerFactory.getLogger(DruidConfiguration.class);
    
        /**
         * 除了DispatcherServlet,还另外注册一个StatViewServlet
         * @return
         */
        @Bean
        public ServletRegistrationBean druidServlet(){
            //ServletRegistrationBean提供类的进行注册.
            ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(new StatViewServlet(),"/druid/*");
            //IP白名单
            servletRegistrationBean.addInitParameter("allow","192.168.52.30,127.0.0.1");
            //IP黑名单
            servletRegistrationBean.addInitParameter("deny","192.168.1.100");
            //控制台管理用户
            servletRegistrationBean.addInitParameter("loginUsername","admin");
            servletRegistrationBean.addInitParameter("loginPassword","1234");
            //是否能够重置数据,禁用HTML页面上的"Reset All"功能
            servletRegistrationBean.addInitParameter("resetEnable","false");
            return servletRegistrationBean;
        }
    
        /**
         * 注册一个:filterRegistrationBean
         * @return
         */
        @Bean
        public FilterRegistrationBean filterRegistrationBean(){
            FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(new WebStatFilter());
            //添加过滤规则.
            filterRegistrationBean.addUrlPatterns("/*");
            //添加不需要忽略的格式信息.
            filterRegistrationBean.addInitParameter("exclusions", "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*");
            return filterRegistrationBean;
        }
    
        /**
         * 返回数据源
         * @return
         */
        @Bean(name="dataSource")
        @ConfigurationProperties(prefix="spring.datasource")
        public DataSource dataSource(){
            return new DruidDataSource();
        }
    
        /**
         * 配置事物管理器
         * 当使用注解 @EnableTransactionManagement 开启事务支持后,然后在访问数据库的Service方法上添加注解 @Transactional 便可。
         * 不管是JPA还是JDBC等都实现自接口 PlatformTransactionManager
         * 如果你添加的是 spring-boot-starter-jdbc 依赖,框架会默认注入 DataSourceTransactionManager 实例。
         * 如果你添加的是 spring-boot-starter-data-jpa 依赖,框架会默认注入 JpaTransactionManager 实例。
         * 所以下面这段是可以删除掉的
         * @return
         */
        @Bean(name="transactionManager")
        public DataSourceTransactionManager transactionManager() {
            return new DataSourceTransactionManager(dataSource());
        }
    }

    2. yml配置

    spring:
      datasource:
        type: com.alibaba.druid.pool.DruidDataSource
        url: jdbc:mysql://192.168.74.128:3306/test?characterEncoding=utf8
        username: root
        password: 123456
        driver-class-name: com.mysql.jdbc.Driver
        #下面是连接池的补充配置,应用到上面所有数据源中
        # 初始化大小,最小,最大
        initialSize: 1
        minIdle: 3
        maxActive: 20
        # 配置获取连接等待超时的时间
        maxWait: 60000
        # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
        timeBetweenEvictionRunsMillis: 60000
        # 配置一个连接在池中最小生存的时间,单位是毫秒
        minEvictableIdleTimeMillis: 30000
        # 验证数据库连接的查询语句,这个查询语句必须是至少返回一条数据的SELECT语句
        validationQuery: select 'x'
        # 申请连接的时候检测,如果空闲时间大于timeBetweenEvictionRunsMillis,执行validationQuery检测连接是否有效。
        testWhileIdle: true
        # 申请连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能。
        testOnBorrow: false
        # 归还连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能
        testOnReturn: false
        # 是否缓存preparedStatement,也就是PSCache。PSCache对支持游标的数据库性能提升巨大,比如说oracle。在mysql下建议关闭,并且指定每个连接上PSCache的大小
        poolPreparedStatements: true
        maxPoolPreparedStatementPerConnectionSize: 20
        # 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
        filters: stat,wall,slf4j
        # 通过connectProperties属性来打开mergeSql功能;慢SQL记录
        connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
        # 合并多个DruidDataSource的监控数据
        #useGlobalDataSourceStat: true -->

    三、POM文件

    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>druid</artifactId>
        <version>${druid.version}</version>
    </dependency>
  • 相关阅读:
    多线程 线程队列的实现
    如何使用vagrant在虚拟机安装hadoop集群
    【leetcode】Rotate List
    麒麟(Kylin)与Ubuntu的寓意相通
    山寨APP恶意吸费隐患 门槛底致监管盲点
    2013年软件设计师之考前复习笔记:IP地址
    .gitkeep
    cmd 里面运行git提示“不是内部或外部命令,也不是可运行的程序”的解决办法...
    windows常用命令行命令
    PhpStorm terminal无法输入命令的解决方法
  • 原文地址:https://www.cnblogs.com/yifanSJ/p/9799350.html
Copyright © 2011-2022 走看看