我想根据从属性文件中读取的值有条件地创建Aspect
。 (这与剖析有关,这就是选择性使用的原因)。
我尝试创建一个实现https://jsfiddle.net/grinmax_/ep3am6xz/4/的类,因此我matches()
方法允许我执行必要的验证并将输出设置为相应的Boolean
,启用或禁用它。
@Aspect
@Conditional(MyCondition.class)
public class MyAspect {
...
pointCuts, methods and etc...
...
}
事情是:Aspect
实际上是由Spring实例化的,显然它不尊重@Conditional
注释输出。
我在这里缺少任何警告吗?
版本:
Spring version: 4.1.4.RELEASE
AspectJ version: 1.7.3
(项目依赖树有点复杂'所以更新库必须带着一点点盐:) :)
答案 0 :(得分:1)
如果您将方面注册为组件,则可以设法获得条件Aspect Behaviour
,如@EnableAspectJAutoProxy配置中所述。
来自文档:
支持处理使用AspectJ的@Aspect注释标记的组件,类似于Spring的XML元素中的功能。用于@Configuration
请注意, @Aspect bean可以像任何其他一样进行组件扫描。只需使用@Aspect和@Component标记方面:
因此,只需将@Component添加到bean并在需要时设置正确的组件扫描即可解决您的问题。
例如:
@Aspect
@Component
@Conditional(MyCondition.class)
public class MyAspect {
...
pointCuts, methods and etc...
...
}