我希望根据从属性文件读取的值有条件地创建Aspect。(这与特征分析有关,这就是为什么计划中的选择性使用)。
我尝试创建一个实现条件的类,从而创建一个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(项目依赖树有点“复杂”,因此更新库必须用少量的盐分:)
发布于 2017-02-14 12:46:37
如果您将方面注册为组件(如Aspect Behaviour配置中所述),您可以设法获得一个有条件的@EnableAspectJAutoProxy。
从医生那里:
启用对处理标记为AspectJ的@方面注释的组件的支持,类似于Spring的XML元素中的功能。用于@配置 请注意,@方面bean可能是组件--与任何其他一样被扫描。只需将方面标记为@方面和@组件:
因此,您的问题应该通过在bean中添加@Component并在需要时设置适当的组件扫描来解决。
例如:
@Aspect
@Component
@Conditional(MyCondition.class)
public class MyAspect {
...
pointCuts, methods and etc...
...
}https://stackoverflow.com/questions/42225463
复制相似问题