当前位置: 首页 > 知识库问答 >
问题:

Spring AOP中use@PointCut方法的含义是什么,只是一个切入点签名?

杨志强
2023-03-14

学习Spring AOP,代码如下:

@Component
@Aspect
public class FanAnnotationImpl {

    @Pointcut("@annotation(com.fan.spboot.core.aopdemo.FanAnnotation)")
    private void entry(){
        System.out.println("entry annotation");
    }
    @Around("entry()")
    public void around(ProceedingJoinPoint joinPoint)throws Throwable{
        System.out.println("around before");
        try {
            joinPoint.proceed();
        }catch (Exception e){
            e.printStackTrace();
        }
        System.out.println("around after");
    }

    @Before("entry()")
    public void before(){

        System.out.println("Before entry");

    }

    @After("entry()")
    public void after(){
        System.out.println("After entry");

    }
}

spring-aop-point Cut-教程有一个介绍:

“方法声明称为切入点签名。它提供了一个名称,通知注释可以使用该名称来引用该切入点。”

让我感到困惑的是方法use@PointCut,它只是一个切入点签名?因为我发现这个方法中的代码没有执行,改变这个方法的类型就可以了;那为什么是方法?使用变量也可以吗?

共有1个答案

鱼阳伯
2023-03-14

你自己已经引用了手册。很清楚,不是吗?Spring AOP基于注释,而不是变量。注释是Java向类、方法或其他语言元素添加信息的标准方法。

方法只是定义可在多个位置使用的切入点的一种方法,例如,如果您想要组合多个切入点,如切入点1

@PointCut注释的方法当然永远不会被Spring AOP调用,因为该方法只是您需要通过切入点注释来装饰的假人。毕竟,您需要将注释放在某个地方。

如果您只在单个位置使用切入点,则无需通过@PointCut定义它,您可以直接将切入点写入您的@前@后@周围注释中。

实际上,这个答案非常多余,因为Spring AOP手册中对所有内容都进行了很好的解释。

 类似资料:
  • 当我安装Magento 2在我的服务器上,我得到了一个错误。经过对代码的调查,发现有三个点(),这是产生错误的。我包含了我在下面找到的代码:

  • 这两天我一直在和Git Bash合作。我现在知道了诸如、、、和等基本操作。但我还是不知道Git Bash本身到底是什么! 我已经搜索了很多关于Git Bash的内容,但是我看到的所有站点都集中在它的命令的功能上。我仍然没有为我的问题找到一个好的答案。现在,我想,我在正确的地方得到这个答案!

  • (...)当您在非托管环境中使用JmsTemplate时,您可以通过使用属性SessionTransact和SessionAccountingEmode来指定这些值(事务和确认模式)。 当您将PlatformTransactionManager与JmsTemplate一起使用时,模板总是被赋予一个事务性JMS会话。(..) (顺便说一句,这是真的--会话是事务性的) 我调试了它不正确的原因,发现:

  • 问题内容: 我第一次在方法签名中看到它。 我试图访问一个.class文件。它具有如下定义的方法 那个GraphData就是带有getter和setter的POJO。为什么显示.class文件而不是显示? 问题答案: 它是 varargs ,只能在参数列表中最后使用。最后一个参数可以容纳多个对象。 查看“ a”和“ b”如何转换为数组。

  • 我尝试在浏览控制台中测试此语法,但遇到错误: 对于上面的代码,我关心的是是否会引发任何错误。

  • 我正在学习node js,遇到了“