Spring Boot——Druid在application.yml文件中配置【spring.datasource.druid.aop-patterns】无效解决方案
·
问题描述
在使用aop-patterns配置的时候发现Spring监控无效
Druid版本:1.1.22
如果SpringBoot的配置使用的是properties文件,该配置正常。
如果使用yml作为配置文件,则该配置无效。
问题分析


似乎不能以“-”作为分隔符。
使用了ConditionalOnProperty注解,该配置类并不会生效。
解决方案
方法一:重写DruidSpringAopConfiguration
如果我们想要使用yml文件,并且希望该配置生效,我们可以定义自己的配置文件,显示的注册相关的bean对象。
package com.jianggujin.love;
import org.springframework.context.annotation.Configuration;
import com.alibaba.druid.spring.boot.autoconfigure.properties.DruidStatProperties;
import com.alibaba.druid.support.spring.stat.DruidStatInterceptor;
import org.aopalliance.aop.Advice;
import org.springframework.aop.Advisor;
import org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator;
import org.springframework.aop.support.RegexpMethodPointcutAdvisor;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.context.annotation.Bean;
@Configuration
public class DruidConfiguration{
@Bean
public Advice advice() {
return new DruidStatInterceptor();
}
@Bean
public Advisor advisor(DruidStatProperties properties) {
return new RegexpMethodPointcutAdvisor(properties.getAopPatterns(), advice());
}
@Bean
public DefaultAdvisorAutoProxyCreator advisorAutoProxyCreator() {
DefaultAdvisorAutoProxyCreator advisorAutoProxyCreator = new DefaultAdvisorAutoProxyCreator();
advisorAutoProxyCreator.setProxyTargetClass(true);
return advisorAutoProxyCreator;
}
}
方法二:直接修改yml中aop-patterns字段为逗号分隔的字符串
修改yml中aop-patterns字段为逗号分隔的字符串,不要使用-符号的数组

运行结果

参考文章
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)