【发布时间】:2020-10-01 18:25:25
【问题描述】:
我想根据我的数据库中的某些属性启用/禁用某个方面。我该怎么做?
我也在使用 AspectJ LTW,但是当我尝试在 @Pointcut 中使用 if() 时,它会显示一个警告,但代码编译得很好。我不想走那条路。另外,我不想让我的 Aspect 成为一个组件并使用 Conditional 属性,因为那样我就必须从属性文件中选择属性。 这是我的代码的粗略 sn-p。
@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>
【问题讨论】:
-
感谢您告诉我们您不想要的东西。你想要什么,你的示例代码在哪里?如果您使用 Aspect,为什么需要将您的切面作为组件?只有 Spring AOP 才需要。但实际上 Spring AOP 和 AspectJ 都支持
if()切入点指示符。您可以将任何类型的代码放入该方法中。我真的不明白问题出在哪里。 -
附上我的示例代码。我想根据数据库中的属性运行我的 Aspect。我尝试使用 if() 并且它确实有效,但我使用的是 IntelliJ,它显示错误为“如果指针指示符不受弹簧支持”。
标签: spring-boot intellij-idea aspectj