我熟悉 Spring AOP,尽管没有太多实践经验。
我的问题是,如果我想为类的某些方法而不是全部方法提供一些 AOP 功能,那么可以使用单切入点吗?假设我的类中有四个方法 save1,save2,get1 和 get2 ,我想仅在 save1 和 save2 上应用 AOP,那么在这种情况下我该如何创建一个切入点?我的切入点表达式会是什么样子?或者这可能吗?
最佳答案
有很多方法可以做到这一点(使用通配符表达式,使用aspectJ注释,..) 我将给出一个方面的例子
class MyClass{
@MyPoint
public void save1(){
}
@MyPoint
public void save2(){
}
public void save3(){
}
public void save4(){
}
}
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface MyPoint {
}
@Aspect
@Component
public class MyAspect {
@Before("@annotation(com.xyz.MyPoint)")
public void before(JoinPoint joinPoint) throws Throwable {
//do here what u want
}
}
所以你已经准备好了,只要你标记了@Mypoint
注解,spring就会在这个方法之前调用aspect,确保spring正在管理这个方法和对象,而不是你。在你的类路径中包含aspectJ
关于java - 在 Spring AOP 中指定切入点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12588885/