(十二)Spring AOP(面向切面编程)核心概念

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/jiangshangchunjiezi/article/details/88852381

解释AOP

是面向对象开发的一种补充,它允许开发人员在不改动原来模型的基础上动态地修改模型以满足新的需求。比如,开发人员可以在不改变原来业务逻辑模型的基础上动态的增加日志、安全、或异常处理功能。

切面Aspect: 满足同时对多个模块增加功能(例如:日志记录,性能统计,安全控制,事务处理,异常处理等等),多个模块可以共用此功能,方便快捷的实现业务需求。

public class LogProxy {

    @Before("execution(public int lzj.com.spring.aop.ArithmeticCalculator.*(int, int))")
    public void beforMethod(JoinPoint point){
        String methodName = point.getSignature().getName();
        List<Object> args = Arrays.asList(point.getArgs());
        System.out.println("调用前连接点方法为:" + methodName + ",参数为:" + args);
    }

}

切点Pointcut: 定义一个范围,控制增加的功能作用的范围(范围:一个包下的所有类,一个类,一个方法等等)。

execution(public int lzj.com.spring.aop.ArithmeticCalculator.*(int, int))"

指定一个通知将被引发的一系列连接点的集合。AOP 通过切点定位到特定的连接点。切点和连接点不是一对一的关系,一个切点匹配多个连接点,切点通过 org.springframework.aop.Pointcut 接口进行描述,它使用类和方法作为连接点的查询条件。每个类都拥有多个连接点,例如 ArithmethicCalculator类的所有方法实际上都是连接点。

通知Advice:定义一个时间点,控制增加的功能使用的时机
通知参考:https://mp.csdn.net/postedit/88839468

连接点(Join point)

连接点是在应用执行过程中能够插入切面的一个点。这个点可以是类的某个方法调用前、调用后、方法抛出异常后等。切面代码可以利用这些点插入到应用的正常流程之中,并添加行为。

织入(Weaving)

把切面连接到其他的应用程序类型或者对象上,并创建一个被通知的对象.

织入可以在编译时,加载时,或运行时完成。

在Spring AOP 中,关注点和横切关注点的区别是什么?

关注点是应用中一个模块的行为,一个关注点可能会被定义成一个我们想实现的一个功能。
横切关注点是一个关注点,此关注点是整个应用都会使用的功能,并影响整个应用,比如日志,安全和数据传输,几乎应用的每个模块都需要的功能。因此这些都属于横切关注点。

Spring中AOP的实现方式

可以通过XML配置文件或者 注解的方式来使用Spring AOP

猜你喜欢

转载自blog.csdn.net/jiangshangchunjiezi/article/details/88852381
今日推荐