当前位置 博文首页 > 无限迭代中......:Spring Boot——Druid在application.yml文件

    无限迭代中......:Spring Boot——Druid在application.yml文件

    作者:[db:作者] 时间:2021-07-19 19:23

    问题描述

    在使用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 配置(配置完成后不需要在配置类写)根据阿里官方个人整理

    cs