zoukankan      html  css  js  c++  java
  • 21、整合Druid数据源

    1)、引入外部的数据源(Druid)

    <!-- https://mvnrepository.com/artifact/com.alibaba/druid -->
    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>druid</artifactId>
        <version>1.1.10</version>
    </dependency>

    2)、配置文件中切换默认的数据源

    spring.datasource.url=jdbc:mysql://127.0.0.1:3306/users?serverTimezone=GMT
    spring.datasource.username=root
    spring.datasource.password=1234
    spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
    spring.datasource.type=com.alibaba.druid.pool.DruidDataSource

    3)、配置其他属性

    spring.datasource.url=jdbc:mysql://127.0.0.1:3306/users?serverTimezone=GMT
    spring.datasource.username=root
    spring.datasource.password=1234
    spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
    spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
    #其他配置
    # 下面为连接池的补充设置,应用到上面所有数据源中
    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
    # 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
    spring.datasource.filters=stat,wall
    spring.datasource.logSlowSql=true

    4)、此时的配置并不能使用,需要将其加入容器
    @Configuration
    public class MyDruid {
        @ConfigurationProperties(prefix = "spring.datasource")
        @Bean
        public DataSource druid(){
            return  new DruidDataSource();
        }
    }

     Debug查看:

     

    5)、配置监听

     

    public class StatViewServlet extends ResourceServlet {
        private static final Log LOG = LogFactory.getLog(StatViewServlet.class);
        private static final long serialVersionUID = 1L;
        public static final String PARAM_NAME_RESET_ENABLE = "resetEnable";
        public static final String PARAM_NAME_JMX_URL = "jmxUrl";
        public static final String PARAM_NAME_JMX_USERNAME = "jmxUsername";
        public static final String PARAM_NAME_JMX_PASSWORD = "jmxPassword";
    public abstract class ResourceServlet extends HttpServlet {
        private static final Log LOG = LogFactory.getLog(ResourceServlet.class);
        public static final String SESSION_USER_KEY = "druid-user";
        public static final String PARAM_NAME_USERNAME = "loginUsername";
        public static final String PARAM_NAME_PASSWORD = "loginPassword";
        public static final String PARAM_NAME_ALLOW = "allow";
        public static final String PARAM_NAME_DENY = "deny";
        public static final String PARAM_REMOTE_ADDR = "remoteAddress";

     上面作为参考!!!!

    @Configuration
    public class MyDruid {
    
    
        @ConfigurationProperties(prefix = "spring.datasource")
        @Bean
        public DataSource druid(){
            return  new DruidDataSource();
        }
        //配置Druid的监控
        //1、配置一个管理后台的Servlet
        @Bean
        public ServletRegistrationBean statViewServlet(){
            ServletRegistrationBean bean = new ServletRegistrationBean(new StatViewServlet(), "/druid/*");
            Map<String,String> initParams = new HashMap<>();
    
            initParams.put("loginUsername","admin");
            initParams.put("loginPassword","123456");
            //允许访问,默认所有都可访问
            initParams.put("allow","");//默认就是允许所有访问
            //不让访问
            initParams.put("deny","192.168.15.21");
            //设置初始化参数
            bean.setInitParameters(initParams);
            return bean;
        }
    
    
        //2、配置一个web监控的filter
        @Bean
        public FilterRegistrationBean webStatFilter(){
            FilterRegistrationBean bean = new FilterRegistrationBean();
            bean.setFilter(new WebStatFilter());
    
            Map<String,String> initParams = new HashMap<>();
            //排除拦截的请求
            initParams.put("exclusions","*.js,*.css,/druid/*");
            //设置初始化参数
            bean.setInitParameters(initParams);
             //拦截的请求
            bean.setUrlPatterns(Arrays.asList("/*"));
    
            return  bean;
        }

     使用上述设置的账号密码进行登录:

     

    登录成功之后:

     

    执行一个查询:

     

    查看监控:

     

  • 相关阅读:
    Python深入05 装饰器
    Python深入04 闭包
    Python深入03 对象的属性
    Ubuntu (虚拟机同样) 更换内核?
    .out
    GCC 编译详解
    linux 编译内核 /boot空间不足?
    Java Swing提供的文件选择对话框
    Java Swing 实时刷新JTextArea,以显示不断append的内容?
    为什么要编译Linux内核?
  • 原文地址:https://www.cnblogs.com/Mrchengs/p/10357813.html
Copyright © 2011-2022 走看看