【发布时间】:2015-06-04 22:49:28
【问题描述】:
我正在使用 CTW AspectJ,我正在尝试将一个字段@inject 到我的 Aspect 中。 注入的字段总是返回 null。
我正在使用基于 Java 的配置:
@Configuration
@EnableAspectJAutoProxy(proxyTargetClass=true)
public class 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
}
【问题讨论】:
-
请给我们代码
-
你的切面是否被注释为 Spring @Component?如果没有代码,我们只能猜测。
-
我已经厌倦了使用和不使用@Component 并获得相同的结果。我已经添加了我的方面代码和 bean 代码。
-
在注入之前是 bean 调用,您可以执行以下选项之一 1.不要使用 @inject 2 创建 bean 后处理器,在那里您可以做任何您想做的事情
标签: java spring aspectj spring-aop