我正在使用 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/