java - @Inject 在 @aspect 上为空

标签 java spring aspectj spring-aop

我正在使用 CTW AspectJ,并且我正在尝试将一个字段 @inject 到我的 Aspect 中。 注入(inject)的字段始终返回 null。

我正在使用基于 Java 的配置: @配置 @EnableAspectJAutoProxy(proxyTargetClass = true) 公共(public)类 ServicesConfig..

Spring本身是使用org.springframework.web.context.support.AnnotationConfigWebApplicationContext加载的

据我所知,我的 Aspect 不是使用 Spring 框架实例化,而是通过aspectj 实例化。 使用 Spring 加载 Aspect 时缺少什么?

这就是我的方面:

@Aspect
public class MyAspect {

    @Inject
    private SomeBean someBean;

    @Around("execution(* com.mypackages..*(..))")
    public Object logAround(ProceedingJoinPoint joinPoint) throws Throwable   {
        Object result = null;
        //some Aspect logic
        return result;
    }
}

这就是 bean 的实例化方式,如果我尝试在应用程序中的其他任何位置 @inject 它,我就会得到该 bean。

@Named
@Scope(value = "prototype")
public class SomeBean{
    //bean logic
}

最佳答案

带有 CTW 的 Spring-AspectJ 文档可以在 here 找到。 。请注意,您必须使用 @Configurable 注释您的 @Aspect。 考虑到您可能错过了构建阶段或其中的一部分。我的意思是您必须包含 spring-aspects.jar 作为方面库(无论您使用 Maven 还是 Ant)。

此外,您还可以找到很好的示例/答案 here

关于java - @Inject 在 @aspect 上为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30655530/

相关文章:

java - 如何设置通知的标题和内容?

Spring boot MongoDb 复杂查询

spring - spring boot : Encoded password does not look like BCrypt中的登录错误

java - spring中如何注入(inject)driverClassLoader属性?

java - Spring Aspect 将不会运行

java - 按类型拦截 AspectJ java

java - 将对象转换为 blob (java.lang.ClassCastException : [B cannot be cast to java. sql.Blob)

java - AdminTask.createDatasource 在 Dockerfile 中给出语法错误

java - 生产系统中的 AspectJ 加载时织入

java - 在 swing/Java 中为自定义 DnD 设置 DragImage