java - Spring 加载时间编织不检测用@configurable注释的类

标签 java spring aspectj

我无法让 AspectJ 在我的主项目中对一个用 @configurable 注释的类执行加载时间织入。没有设置任何字段,也没有触及任何 setter 。

我认为配置本身没有问题,因为我已经提取了配置并在较小的沙盒项目上对其进行了测试。只是为了它,我会把它包括在这个问题中。

所以,我想知道:

  1. 在更大的项目中是否有任何东西可能会阻碍 Spring/AspectJ 检测这个特定的类?
  2. 有没有办法检查 spring 是否知道问题中的类?

最后,我可以提取任何代码(请原谅混淆):

来自配置 XML:

<context:annotation-config />
<context:spring-configured />
<context:component-scan base-package="se.isydev" />
<context:component-scan base-package="se.istools" />
<aop:aspectj-autoproxy />
<context:load-time-weaver aspectj-weaving="on" />
<context:property-placeholder location="classpath:settings.properties" />
(...)
<bean class="com.company.ClassToBeWeaved"
    scope="prototype">      
    <property name="injectedBean" ref="injectedBean" />
</bean>

类本身:

@Configurable
public class ClassToBeWeaved {
    private InjectedBean injectedBean;

    @Required
    public void setInjectedBean() { ... }
}

编辑:

好吧,事实证明它由于循环依赖而无法正常工作。天哪,我喜欢处理遗留代码。尽管如此,我最初的问题仍然存在。

最佳答案

您可能忘记了“weave”。将 -javaagent:path/to/aspectjweaver.jar-javaagent:path/to/spring-agent.jar 添加到您的命令行。

我还建议您 @Autowire 您的依赖项,而不是显式注入(inject)它。

关于java - Spring 加载时间编织不检测用@configurable注释的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1389760/

相关文章:

java - 如何为 API 级别低于 26 的 LocalDateTime 添加持续时间

java - Spring 面 错误面 :flow-builder-services

java - 如何使用 Spring AOP 或 AspectJ 拦截给定方法中的每个方法调用

java - ClassLoader 不提供 'addTransformer(ClassFileTransformer)' 方法

java - aspectj-maven-plugin 多模块项目

java - 从创建 FragmentStatePagerAdapter 的 Activity 中调用 Fragment 中的方法

java - 将 getPasswordAuthentication 函数转换为 Kotlin

java - 如何通过执行 Prepared Statement 获取 boolean 值?

java - ResponseAdvice 未触发

Spring Boot Actuator 在单独的线程池中运行