在我的 spring-boot 应用程序中,我依赖于外部 jar,其中包含一个标有注释的类,在该类上触发此 jar 中的 @Aspect。
我有用 mu 自定义注释注释的 dao 方法:
@MyAnnotation
public void save(MyEntity entity)
{
super.save(entity);
}
我有一个方面,其中有一个建议,在调用 save() 方法后发送消息:
@Aspect
public class MySuperAspect
{
@Autowired
MessageSender messageSender;
@Around("@annotation(MyAnnotation) && args(entity)")
public void sendMessage(MyEntity entity)
{
messageSender.send();
}
}
我确实需要 jar 中的 Dao 方法,但我想禁用它的方面。
方面是通过 Spring XML 配置创建的,它也在我使用的 jar 内。
我可以修改方面本身,但这是不可取的,因为它不仅由我的 spring-boot 应用程序使用。
我尝试过:
- 在我的 spring-boot 应用程序中禁用 xml 配置扫描;
- 将 xml 配置更改为注释并在扫描时对其进行过滤;
- 在要通过属性禁用的方面添加 @ConditionalOnExpression 和 @ConditionalOnProperty;
到目前为止,唯一可行的方法是添加带有属性的 @Value 注释,通过它我可以控制建议内的逻辑,但我很好奇这是唯一的方法,还是我可能遗漏了一些东西?
最佳答案
您需要停止 spring boot 扫描此类...因为它必须配置为扫描此方面,否则它将不会拾取并应用该方面。
关于java - 在运行时覆盖/禁用方面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52153340/