gpt4 book ai didi

java - 将 @Aspect 与 @Conditional 一起使用

转载 作者:行者123 更新时间:2023-12-01 08:53:21 26 4
gpt4 key购买 nike

我想根据从属性文件读取的值有条件地创建一个Aspect。 (它与分析有关,这就是为什么要选择性使用)。

我尝试创建一个实现 Condition 的类因此,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

(项目依赖树有点“复杂”,因此更新库必须持保留态度:))

最佳答案

如果您将方面注册为组件,则可以设法实现条件方面行为,如 @EnableAspectJAutoProxy 中所述。配置。

来自文档:

Enables support for handling components marked with AspectJ's @Aspect annotation, similar to functionality found in Spring's XML element. To be used on @Configuration

Note that @Aspect beans may be component-scanned like any other. Simply mark the aspect with both @Aspect and @Component:

因此,只需将 @Component 添加到您的 bean 并根据需要设置适当的组件扫描即可解决您的问题。

例如:

@Aspect
@Component
@Conditional(MyCondition.class)
public class MyAspect {
...
pointCuts, methods and etc...
...
}

关于java - 将 @Aspect 与 @Conditional 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42225463/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com