zoukankan      html  css  js  c++  java
  • spring boot +druid数据库连接池配置

    1、启动应用入口修改

    增加servlet注解

    import javax.sql.DataSource;
    
    import org.apache.ibatis.session.SqlSessionFactory;
    import org.apache.log4j.Logger;
    import org.mybatis.spring.SqlSessionFactoryBean;
    import org.mybatis.spring.annotation.MapperScan;
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.boot.context.properties.ConfigurationProperties;
    import org.springframework.boot.web.servlet.ServletComponentScan;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.ComponentScan;
    import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
    import org.springframework.jdbc.datasource.DataSourceTransactionManager;
    import org.springframework.transaction.PlatformTransactionManager;
    
    import com.alibaba.druid.pool.DruidDataSource;
    
    @EnableAutoConfiguration
    @SpringBootApplication
    @ComponentScan
    @ServletComponentScan  
    @MapperScan("com.yzf.mapper")
    public class SpringbootMybatisApplication {
        private static Logger logger = Logger.getLogger(SpringbootMybatisApplication.class);
        
        //DataSource配置
        @Bean
        @ConfigurationProperties(prefix="spring.datasource")
        public DataSource dataSource() {
            //return new org.apache.tomcat.jdbc.pool.DataSource();
             DruidDataSource druidDataSource = new DruidDataSource();  
             return druidDataSource;  
        }
        
      //提供SqlSeesion
        @Bean
        public SqlSessionFactory sqlSessionFactoryBean() throws Exception {
     
            SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
            sqlSessionFactoryBean.setDataSource(dataSource());
     
            PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
     
            sqlSessionFactoryBean.setMapperLocations(resolver.getResources("classpath:/mybatis/*.xml"));
     
            return sqlSessionFactoryBean.getObject();
        }
        
        @Bean
        public PlatformTransactionManager transactionManager() {
            return new DataSourceTransactionManager(dataSource());
        }
        
        public static void main(String[] args) {
            SpringApplication.run(SpringbootMybatisApplication.class, args);
        }
    }

    2、连接池修改

    properties

    # 数据库访问配置
    # 主数据源,默认的
    spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
    spring.datasource.driver-class-name=com.mysql.jdbc.Driver
    spring.datasource.url=jdbc:mysql://localhost:3306/db_shiro
    spring.datasource.username=root
    spring.datasource.password=root
    
    # 下面为连接池的补充设置,应用到上面所有数据源中
    # 初始化大小,最小,最大
    spring.datasource.initialSize=5
    spring.datasource.minIdle=5
    spring.datasource.maxActive=20
    # 配置获取连接等待超时的时间
    spring.datasource.maxWait=60000
    # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 
    spring.datasource.timeBetweenEvictionRunsMillis=60000
    # 配置一个连接在池中最小生存的时间,单位是毫秒 
    spring.datasource.minEvictableIdleTimeMillis=300000
    spring.datasource.validationQuery=SELECT 1 FROM DUAL
    spring.datasource.testWhileIdle=true
    spring.datasource.testOnBorrow=false
    spring.datasource.testOnReturn=false
    # 打开PSCache,并且指定每个连接上PSCache的大小 
    spring.datasource.poolPreparedStatements=true
    spring.datasource.maxPoolPreparedStatementPerConnectionSize=20
    # 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙 
    spring.datasource.filters=stat,wall,log4j
    # 通过connectProperties属性来打开mergeSql功能;慢SQL记录
    spring.datasource.connectionProperties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
    # 合并多个DruidDataSource的监控数据
    #spring.datasource.useGlobalDataSourceStat=true

    3、新增监控servlet

    package com.yzf.servlet;
    
    import javax.servlet.annotation.WebInitParam;
    
    import com.alibaba.druid.support.http.StatViewServlet;
    import javax.servlet.annotation.WebServlet;  
    
    /**
     * web.xml中配置
     * <!-- 数据库监控 start -->
        <servlet>
            <servlet-name>DruidStatView</servlet-name>
            <!-- 展示监控页面的servlet -->
            <servlet-class>com.alibaba.druid.support.http.StatViewServlet</servlet-class>
            <init-param>
                <param-name>profileEnable</param-name>
                <param-value>true</param-value>
            </init-param>
            <init-param>
                <param-name>resetEnable</param-name>
                <param-value>false</param-value>
            </init-param>
            <!-- 可选项  登陆的用户名和密码 -->
            <init-param>
                <param-name>loginUsername</param-name>
                <param-value>druid</param-value>
            </init-param>
            <init-param>
                <param-name>loginPassword</param-name>
                <param-value>druid</param-value>
            </init-param>
        </servlet>
        <servlet-mapping>
            <servlet-name>DruidStatView</servlet-name>
            <url-pattern>/druid/*</url-pattern>
        </servlet-mapping>
     * 
     * @author luozuzu
     *
     */
    @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="admin"),// 用户名  
            @WebInitParam(name="loginPassword",value="123"),// 密码  
            @WebInitParam(name="resetEnable",value="false")// 禁用HTML页面上的“Reset All”功能  
    })  
    public class DruidStatViewServlet extends StatViewServlet {  
        private static final long serialVersionUID = 1L;  
    }  

    4、新增filter

    package com.yzf.servlet;
    
    import javax.servlet.annotation.WebFilter;
    import javax.servlet.annotation.WebInitParam;
    
    import com.alibaba.druid.support.http.WebStatFilter;
    
    @WebFilter(filterName="druidWebStatFilter",urlPatterns="/*",  
    initParams={  
             @WebInitParam(name="exclusions",value="*.js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico,/druid/*")// 忽略资源  
     }  
    )  
    public class DruidStatFilter extends WebStatFilter{  
      
    }  

    参考资料:

    http://blog.csdn.net/sinat_36203615/article/details/53759935

  • 相关阅读:
    html表单提交的几种方法
    ORACLE-SQLLOAD导入外部数据详解
    js 技巧1
    js 细节
    问题链接
    abstract 抽象类
    修饰符 public、 private 和 protected和区别
    HTML5新特性之Mutation Observer
    img 标签上的src 链接图片不存在时 怎么处理
    npm 用 淘宝代理
  • 原文地址:https://www.cnblogs.com/yaoyiyao/p/7243443.html
Copyright © 2011-2022 走看看