问题描述

在使用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字段为逗号分隔的字符串,不要使用-符号的数组

运行结果

参考文章

Druid Spring Boot Starter配置aop无效

阿里druid-spring-boot-starter 配置(配置完成后不需要在配置类写)根据阿里官方个人整理

Logo

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

更多推荐