如何解决条件切入点表达式
我也正在使用AspectJ LTW,但是当我尝试在@pointcut中使用if()时,它会显示警告,但代码可以正常编译。我不想走那条路。另外,我不想将我的Aspect用作组件并使用Conditional属性,因为那样的话,我将不得不从属性文件中选择该属性。 这是我的代码的大致片段。
@Aspect
class A {
boolean flag = //get value from DB;
@pointcut(value = "execution(* com.sample..check(..)) && if())
public boolean conditional() {
return flag==true ? true : false;
}
@Before("conditional()")
public void doSomething() {
System.out.println("Hello");
}
}
aop.xml
<aspectj>
<aspects>
<aspect name = "com.sample.aspect.A"/>
<weaver>
<include within = "com.sample..*"/>
</weaver>
</aspects>
</aspectj>
解决方法
IntelliJ IDEA中的错误消息if pointcut designator isn't supported by Spring
告诉您Spring AOP方面的真相。如果您在Spring项目中使用方面,它将自动启动。
在您的情况下,方面是本机AspectJ方面,而不是Spring AOP方面。 IDEA不理解这一点,因此解决问题的方法不是更改方法,而只是在编辑器中忽略错误消息,因为您对if()
所做的操作是正确的。 / p>
或者,您也可以告诉IDEA 禁止某个方法或整个类的Spring AOP错误检查:
例如,选择“禁止上课”后,错误将消失,并且您将在课程顶部看到注释@SuppressWarnings("SpringAopErrorsInspection")
。那应该让您放心。但是请注意,由于Spring AOP切入点语法基本上是AspectJ语法的一个子集,因此这也有可能抑制其他同样适用于AspectJ的Spring AOP语法错误。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。