我是spring-aop概念的新手。
编译期间出现此错误。
org.aspectj.weaver.tools.UnsupportedPointcutPrimitiveException:
切入点表达式'abc(inString)'包含不受支持的切入点
原始的“呼叫”
我的方面是
@Aspect
@Component
public class BeforeAdvice {
@Pointcut(value="call(@com.app.test.EncryptDemo * *(String)) && args(inString) && !within(com.app.test.BeforeAdvice)",argNames="inString")
public void abc(String inString) {};
@Around(value = "abc(inString)",argNames="inString")
public Object ourAroundAdvice(ProceedingJoinPoint pjp, String inString) throws Throwable {
System.out.println("in around");
return null;
}
}
我的自定义注释
@Documented
@Target({ ElementType.METHOD, ElementType.FIELD })
@Retention(RetentionPolicy.RUNTIME)
public @interface EncryptDemo {
}
我的实体
@Entity
@Table(name="customer")
@JsonIgnoreProperties(ignoreUnknown = true)
public class Customer {
@Id
@GeneratedValue
private Long id;
private String somethingPublic;
private String somethingPrivate;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getSomethingPublic() {
return somethingPublic;
}
public void setSomethingPublic(String somethingPublic) {
this.somethingPublic = somethingPublic;
}
public String getSomethingPrivate() {
return somethingPrivate;
}
@EncryptDemo
public void setSomethingPrivate(String somethingPrivate) {
this.somethingPrivate = somethingPrivate;
}
}
我已将此依赖项添加到pom中。
弹簧启动启动器aop
方面
AspectJweaver
我找到了一个解决方案,但我不理解他们要说的话。
UnsupportedPointcutPrimitiveException on simple AOP example
请指导我。任何帮助将不胜感激。
谢谢。
最佳答案
Spring使用(默认情况下)基于代理的AOP,因此仅对连接点表达式提供了有限的支持。仅call
连接点不支持的execution
连接点。支持的连接点表达式在文档here中。
除此之外,您尝试将AOP应用于非Spring托管的bean,这也不适用于基于代理的解决方案。
对于这两种情况,您都需要使用load或编译时编织使其起作用。
关于java - 切入点表达式'abc(inString)'包含不受支持的切入点基元'call',我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31416302/