问题解决

文章目录

        • Spring监控不生效
          • 方式1:修改yml的配置写法
          • 方式2:参考DruidSpringAopConfiguration自行注入@Bean,灵活(更建议)

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 {@Beanpublic DruidStatInterceptor druidStatInterceptor() {DruidStatInterceptor dsInterceptor = new DruidStatInterceptor();return dsInterceptor;}@Beanpublic JdkRegexpMethodPointcut druidStatPointcut() {JdkRegexpMethodPointcut pointcut = new JdkRegexpMethodPointcut();pointcut.setPattern("work.linruchang.*");//根据实际包名pointcut.setExcludedPatterns("work.linruchang.kafkaUiLite.conf.*", ".*config.*");return pointcut;}@Beanpublic DefaultPointcutAdvisor druidStatAdvisor(DruidStatInterceptor druidStatInterceptor, JdkRegexpMethodPointcut druidStatPointcut) {DefaultPointcutAdvisor defaultPointAdvisor = new DefaultPointcutAdvisor();defaultPointAdvisor.setPointcut(druidStatPointcut);defaultPointAdvisor.setAdvice(druidStatInterceptor);return defaultPointAdvisor;}
}