• 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;
        }

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

     

    登录成功之后:

     

    执行一个查询:

     

    查看监控:

     

  • 相关阅读:
    Chap-6 6.1~6.3 程序装载
    X Window基础二(转)
    X Window基础一(转)
    Linux基础命令 su与sudo的区别
    Chap-4 Section 4.6 链接控制过程
    Chap-4 Section 4.5 静态库链接
    ceph的CRUSH数据分布算法介绍
    使用ffmpeg捕获USB外部摄像头视频流
    使用ffserver实现转发实时流媒体(摄像头捕获)
    内存映射文件(专门读写大文件)
  • 原文地址:https://www.cnblogs.com/Mrchengs/p/10357813.html
Copyright © 2020-2023  润新知