当前位置: 首页 > 知识库问答 >
问题:

Spring无法拾取AOP配置bean

丌官子安
2023-03-14

错误

Bean 'aopConfiguration' of type [example.config.AopConfiguration$$EnhancerBySpringCGLIB$$5e48431d] is not eligible for getting processed by all BeanPostProcessors

以下bean失败:

    null
@Aspect
@EnableAspectJAutoProxy
@Configuration
public class AopConfiguration {

    @Pointcut("execution(* example.service.TimestampService.findAllTimestamps(..))")
    public void monitor() {
    }

    @Bean
    public PerformanceMonitorInterceptor performanceMonitorInterceptor() {
        return new PerformanceMonitorInterceptor(false);
    }

    @Bean
    public Advisor performanceMonitorAdvisor() {
        AspectJExpressionPointcut pointcut = new AspectJExpressionPointcut();
        pointcut.setExpression("example.config.AopConfiguration.monitor()");
        return new DefaultPointcutAdvisor(pointcut, performanceMonitorInterceptor());
    }
}
logging:
  file:
    name: log.log
  pattern:
    console: "%d{HH:mm:ss.SSS} %msg%n"
  level:
    org.springframework.web: INFO
    example.config.PerformanceMonitorInterceptor: DEBUG
    example: DEBUG

基本上不会将日志记录或跟踪信息放入控制台。

pom中的依赖项

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
            <version>2.3.1.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-aop</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
        </dependency>

        <dependency>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.8.1</version>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>${mysql.version}</version>
        </dependency>
        <dependency>
            <groupId>org.jdbi</groupId>
            <artifactId>jdbi3-core</artifactId>
            <version>3.1.0</version>
        </dependency>
        <dependency>
            <groupId>org.jdbi</groupId>
            <artifactId>jdbi3-sqlobject</artifactId>
            <version>3.1.0</version>
        </dependency>

<!--        https://stackoverflow.com/questions/6919498/java-throttling-->
        <dependency>
            <groupId>org.isomorphism</groupId>
            <artifactId>token-bucket</artifactId>
            <version>1.7</version>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.6</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-classic</artifactId>
            <version>1.2.3</version>
        </dependency>
        <dependency>
            <groupId>org.liquibase</groupId>
            <artifactId>liquibase-core</artifactId>
            <version>${liquibase.maven.plugin.version}</version>
        </dependency>

<!--        logging-->
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>1.8.0-beta2</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-simple</artifactId>
            <version>1.8.0-beta2</version>
        </dependency>
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-api</artifactId>
            <version>2.13.3</version>
        </dependency>
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-core</artifactId>
            <version>2.13.3</version>
        </dependency>

        <!-- test -->
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter</artifactId>
            <version>${junit.jupiter.version}</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.mockito</groupId>
            <artifactId>mockito-core</artifactId>
            <version>${mockito.version}</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-api</artifactId>
            <version>5.6.2</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-engine</artifactId>
            <version>5.6.2</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.junit.vintage</groupId>
            <artifactId>junit-vintage-engine</artifactId>
            <version>5.6.2</version>
            <scope>test</scope>
        </dependency>

<!--    integration    test-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>3.0.0-M5</version>
        </dependency>

        <!--         build -->
        <dependency>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <version>3.2.0</version>
        </dependency>

        <dependency>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-dependency-plugin</artifactId>
            <version>3.1.2</version>
        </dependency>

        <dependency>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-assembly-plugin</artifactId>
            <version>3.3.0</version>
        </dependency>

    </dependencies>

共有1个答案

乔望
2023-03-14

一个方面不应该是它自己的配置类,因为配置是针对整个应用程序的。为@configuration使用一个单独的类,并让@aspect只是一个方面(同时也使该方面成为@component)。实际上,代理配置与Spring中的AOP代理不同。如果你对技术细节感兴趣,请阅读我在这里的答案。

 类似资料:
  • 我正在使用Spring 3.1.1版的应用程序中工作,现在我需要为其添加一些方面。这些方面是用aspectj语言编写的,没有注释。我已经阅读了Spring docs第8.8章,但我正在努力使其工作。 我的spring配置如下所示: 在我的pom中,是一个Maven项目,我有spring aop、aspectjrt和aspectjweaver作为依赖项。 我的问题是,当启动应用程序时,我得到了一个

  • 我正在从工具sbt更新一个旧的0.7.x构建文件,谢天谢地,它同时从名称中删除了对“Simple”的引用。 但是现在我不能为不同的配置使用不同的jar名称(这就是全部要点)。 正如SBT的作者之一和sbt-assembly的作者在一篇博客文章中所描述的那样,这应该是可行的。它也写在这个Stackoverflow问题中。但是这个例子需要一个sbt-assembly的古董版本(从2013年开始的0.9

  • 这意味着我的配置类没有从yml文件中获得配置数据,所以请告诉我哪里做错了。P.S(但是服务器端口8003可以通过应用程序找到)。谢了!

  • SpringBoot似乎无法加载位于src/main/resources上的application.properties文件(也许不是)。我需要添加什么额外的配置来引导我的应用程序? 错误跟踪: 由: org.springframework.boot.autoconfigure.jdbc.DataSourceProperties$DataSourceBeanCreationException:无法

  • 我有一个Spring Framework4应用程序,它使用Hibernate4.3.8作为JPA提供程序。我想使用Hibernate过滤器,因此我需要启用它们。我想在应用程序中全局地做到这一点,我试图用Spring AOP做到这一点。这个想法是,我可以编写一个方面,在每次创建/获取会话时启用过滤器,就像这个问题和这个问题一样。 我已经将和依赖项添加到我的项目中(使用Maven)。我添加了以下方面。

  • 本文向大家介绍spring aop两种配置方式,包括了spring aop两种配置方式的使用技巧和注意事项,需要的朋友参考一下 第一种:注解配置AOP 注解配置AOP(使用 AspectJ 类库实现的),大致分为三步: 1. 使用注解@Aspect来定义一个切面,在切面中定义切入点(@Pointcut),通知类型(@Before, @AfterReturning,@After,@AfterThro