问题解决 - Druid的Spring监控不生效(aop-patterns设置了Spring监控依然不生效)

Spring监控不生效
方式1:修改yml的配置写法

参考类: com.alibaba.druid.spring.boot.autoconfigure.stat.DruidSpringAopConfiguration

个人怀疑:@ConditionalOnProperty仅能识别到字符串,不能识别yml形式的数组语法

在这里插入图片描述


applicaiton.yml == 正确写法

spring:
  datasource:
    druid:
      # 坑,缺少排除选项,且值必须是逗号分割的字符串数组才行,个人建议还是使用自行设置JdkRegexpMethodPointcut拦截切面
      aop-patterns: "work.linruchang.*,work.linruchang.config.*"


applicaiton.yml == 错误写法

spring:
  datasource:
    druid:
      # 坑,无排除选项,且值必须是逗号分割的字符串数组,虽然通过@Value能获取到数组,但是不能被@ConditionalOnProperty注解识别到
      aop-patterns: 
        - "work.linruchang.*"
        - "work.linruchang.config.*"
方式2:参考DruidSpringAopConfiguration自行注入@Bean,灵活(更建议)
@Configuration
public class SpringConfig  implements WebMvcConfigurer {
    @Bean
    public DruidStatInterceptor druidStatInterceptor() {
        DruidStatInterceptor dsInterceptor = new DruidStatInterceptor();
        return dsInterceptor;
    }

    @Bean
    public JdkRegexpMethodPointcut druidStatPointcut() {
        JdkRegexpMethodPointcut pointcut = new JdkRegexpMethodPointcut();
        pointcut.setPattern("work.linruchang.*");//根据实际包名
        pointcut.setExcludedPatterns("work.linruchang.kafkaUiLite.conf.*", ".*config.*");
        return pointcut;
    }

    @Bean
    public DefaultPointcutAdvisor druidStatAdvisor(DruidStatInterceptor druidStatInterceptor, JdkRegexpMethodPointcut druidStatPointcut) {
        DefaultPointcutAdvisor defaultPointAdvisor = new DefaultPointcutAdvisor();
        defaultPointAdvisor.setPointcut(druidStatPointcut);
        defaultPointAdvisor.setAdvice(druidStatInterceptor);
        return defaultPointAdvisor;
    }
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值