在某些场景下需要将Spring的Bean注入到Spring AOP切面的属性中。
类似下面代码:
代码语言:javascript复制@Aspect
public class SomeAspect {
@Inject
private SomeService someService;
@Before("some_pointcut_here")
public void doInterception() {
//...call service here
}
}
结合spring的文档 https://docs.spring.io/spring/docs/3.0.x/spring-framework-reference/html/aop.html#aop-aj-configure
可以得知AspectJ在运行时负责切面的创建,大多数AspectJ切面是单例切面,通过Spring IOC来控制AspectJ的切面很容易,可以通过在bean配置文件中添加 'factory-method="aspectOf"属性来实现。
代码语言:javascript复制
这是xml配置方式,那么Java配置方式怎么办?
可以采用如下写法:
代码语言:javascript复制@Bean
public SomeAspect someAspect() {
return org.aspectj.lang.Aspects.aspectOf(SomeAspect.class);
}