gpt4 book ai didi

java - [TYPE] 类型的 Bean 'x' 不符合所有 BeanPostProcessors 的处理条件

转载 作者:行者123 更新时间:2023-11-30 05:30:38 25 4
gpt4 key购买 nike

我有一个 ResourceAspect 类:

//@Component
@Aspect
public class ResourceAspect {

@Before("execution(public * *(..))")
public void resourceAccessed() {
System.out.println("Resource Accessed");
}

}

这是我的Application类:

@SpringBootApplication
public class Application {

public static void main(String[] args) {
SpringApplication springApplication = new SpringApplication(Application.class);
springApplication.run(args);
}
}

项目内部使用的依赖项是:

  • Spring 启动启动器
  • spring-boot-configuration-processor
  • spring-boot-starter-web
  • spring-boot-starter-test
  • spring-boot-devtools
  • spring-boot-starter-security
  • spring-boot-starter-aop

每当我将 @Component 添加到 ResourceAspect 时,resourceAccessed() 就会执行,但它也会抛出异常 Bean 'x类型为 [TYPE] 的 ' 不符合所有 BeanPostProcessor 处理的条件。如果没有 @Component,则 resourceAccessed() 不会执行。有什么想法吗?

最佳答案

我的猜测是你的切入点execution(* *(..))(基本上是“拦截世界”)影响了太多的组件,甚至是Spring内部的组件。只需将其限制为您真正想要应用方面的类或包,例如

execution(* my.package.of.interest..*(..))

within(my.package.of.interest..*) && execution(* *(..))

如果更容易指定,您还可以排除不需要编织的那些:

!within(my.problematic.ClassName) && execution(* *(..))

!within(my.problematic.package..*) && execution(* *(..))

顺便说一句,使用 Spring AOP(而不是 AspectJ)时,当然您的切面需要是 @Component

关于java - [TYPE] 类型的 Bean 'x' 不符合所有 BeanPostProcessors 的处理条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57629309/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com