栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

springboot+mybatis+druid的配置(sql监控平台)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

springboot+mybatis+druid的配置(sql监控平台)

文章目录
  • 1.依赖
  • 2.配置yml
  • 3.druid配置类
  • 4.验证druid的监控网页
  • 5. 配合springsecurity的情况
  • 6.注意事项
    • 6.1 数据源报(*) property for user to setup
    • 6.2 数据源的filter类名是空

1.依赖
        
            org.mybatis.spring.boot
            mybatis-spring-boot-starter
            2.2.2
        

        
        
            com.alibaba
            druid-spring-boot-starter
            1.2.8
        

        
            mysql
            mysql-connector-java
        
2.配置yml
spring:
  datasource:
    username: root
    password: root
    url: jdbc:mysql://localhost:3306/newsell?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&useSSL=true&serverTimezone=Asia/Shanghai
    driver-class-name: com.mysql.cj.jdbc.Driver
    druid:
      db-type: mysql
      initial-size: 3 # 初始化连接数
      max-active: 8 # 最大连接数
      max-wait: 60000 # 连接超时时间
      filter:
        stat:
          enabled: true
          log-slow-sql: true
          slow-sql-millis: 1000
          merge-sql: false

mybatis:
  mapper-locations: classpath:mapper
@Configuration
public class DruidConfig {
    private static final Logger logger = LoggerFactory.getLogger(DruidConfig.class);
    @Bean
    public DataSource createDruidDataSource(){
        DataSource dataSource= DruidDataSourceBuilder.create().build();
        return dataSource;
    }

    @Bean
    public ServletRegistrationBean druidServlet(){

        logger.info("init Druid Servlet Configuration ");
        ServletRegistrationBean bean = new ServletRegistrationBean(new StatViewServlet(), "/druid/*");
        Map initParams = new HashMap<>();
        // 设置监控页面的登录名和密码以及连接ip
        initParams.put("loginUsername","admin");
        initParams.put("loginPassword","123456");
        initParams.put("allow","");//默认就是允许所有访问
        //initParams.put("deny","黑名单的ip");
        //是否能够重置数据 禁用HTML页面上的“Reset All”功能
        initParams.put("resetEnable", "false");

        bean.setInitParameters(initParams);
        return bean;
    }

    //2、配置一个web监控的filter
    @Bean
    public FilterRegistrationBean webStatFilter(){
        FilterRegistrationBean bean = new FilterRegistrationBean(new WebStatFilter());
        bean.setFilter(new WebStatFilter());
        Map initParams = new HashMap<>();
        initParams.put("exclusions","*.js,*.css,/druid/*");
        bean.setInitParameters(initParams);
        bean.setUrlPatterns(Arrays.asList("/*"));
        return  bean;
    }

}

4.验证druid的监控网页

http://localhost:8326/druid/login.html

输入配置类中配置的密码

5. 配合springsecurity的情况

要关闭csrf或者开启csrf但是对druid忽略,而且/druid/**的路径忽略不验证-----修改security的配置类

 // 认证的处理
    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
                .csrf().disable()
               // .csrf().ignoringAntMatchers("/druid/*").and()
                .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS)
                .and()
                .authorizeRequests()
                .antMatchers("/user/register", "/user/login", "/user/logout", "/user/logout",
                        "/three/total/getQHLToken", "/user/set/pw",

                        "/druid/**",

                        "/doc.html/**", "/swagger-ui.html/**", "/webjars/**",
                        "/v2/api-docs",//swagger api json
                        "/swagger-resources/configuration/ui",//用来获取支持的动作
                        "/swagger-resources",//用来获取api-docs的URI
                        "/swagger-resources/configuration/security",//安全选项
                        "/swagger-ui.html").anonymous()    // 忽视的路径
                .anyRequest().authenticated();

        // 添加token过滤器
        http.addFilterBefore(jwtAuthenticationTokenFilter, UsernamePasswordAuthenticationFilter.class);
        //允许跨域
        http.cors();
    }
6.注意事项

进入druid的web监控页面

6.1 数据源报(*) property for user to setup

第一次你会发现报数据源那一栏报(*) property for user to setup,这是因为你的代码没有调用过sql,调用一下就好了

6.2 数据源的filter类名是空

这种情况就会导致SQL监控那一栏就不会有数据,修改一下配置文件

spring:
  datasource:
    username: root
    password: root
    url: jdbc:mysql://localhost:3306/newsell?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&useSSL=true&serverTimezone=Asia/Shanghai
    driver-class-name: com.mysql.cj.jdbc.Driver
    druid:
      db-type: mysql
      initial-size: 3 # 初始化连接数
      max-active: 8 # 最大连接数
      max-wait: 60000 # 连接超时时间
      filter:
        stat:
          enabled: true
          log-slow-sql: true
          slow-sql-millis: 1000
          merge-sql: false

正常的应该是这样的

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/821031.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号