【发布时间】:2018-09-03 16:16:55
【问题描述】:
在我的 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 方法,但我想为其禁用方面。
Aspect 是通过 Spring XML 配置创建的,它也在我使用的 jar 中。
我可以修改方面本身,但这是不可取的,因为它不仅被我的 spring-boot 应用程序使用。
我试过了:
- 在我的 spring-boot 应用程序中禁用 xml 配置扫描;
- 将 xml 配置更改为注释并在扫描中对其进行过滤;
- 在要被属性禁用的方面添加@ConditionalOnExpression 和@ConditionalOnProperty;
到目前为止,唯一可行的方法是添加带有属性的 @Value 注释,通过该属性我可以控制建议中的逻辑,但我很好奇这是唯一的方法还是我可能遗漏了什么?
【问题讨论】:
-
您需要提供更多信息。这个方面有什么作用。定义触发它的切入点是什么。另外请务必分享一些代码。
标签: java spring-boot aspectj