Java spring -- AOP
Posted Yanyu.Wu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java spring -- AOP相关的知识,希望对你有一定的参考价值。
AOP aspect oriented programing. 面向切面的编程.
编程中会遇到很多在代码中具有横向逻辑的代码, 比如log, 比如性能检测等代码, 这些代码将实际的业务逻辑代码包含在里面, 很难做到纵向的抽离这些重复的横向逻辑代码. 所以引入了AOP的概念.
1. AOP的术语介绍
1.1 连接点
指的是程序中实际的业务逻辑的类, 这些类初始化前后,类的某个方法调用前后, 出现异常后等这些, 所在的特定的位置被称为连接点.
AOP就是找到这些连接点并进行织入性增强.
连接点由两个信息确定: 1. 方法表示的执行点, 2. 相对点表示的方位.
1.2 切点
AOP通过切点定位连接点, 一个切点可以匹配多个连接点. 切点通过org.springframework.aop.pointcut接口进行描述, 作为类和方法的连接点的查询条件.
1.3 增强
增强是织入到目标类的连接点上的一段程序代码. 增强的接口都是带方位名的, BeforeAdvice, AfterRunningAdvice等.
1.4 目标对象
即为业务逻辑对象
1.5 引介
一种特殊的增强. 为类添加属性和方法, 实现没有实现的接口.
1.6 织入
织入是将增强添加到目标类具体连接点上的一个过程.
有三种织入方式, 1. 编译期间织入(要求特殊的编译器). 2. 类装载期间织入(要求特殊的类装载器). 3.动态代理织入(在运行期间为目标类添加增强生成子类的方式.)
Spring使用3.动态代理织入. AspectJ使用1.2.
1.7 代理
一个类被AOP织入增强后, 就产出一个结果类, 是融合了原来类和增强逻辑的代理类. 根据不同的代理方式, 代理类可能是原来类具有相同接口的类, 也可以是原来类的子类, 所以可以采用与调用原来类相同的方式调用代理类.
1.8 Aspect切面.
切面由切点和增强组成. 包括了横切路基的定义. 也包括了连接点的定义. Spring AOP就是负责实施切面的框架. 将切面定义的横切逻辑织入切面指定的链接点当中.
所以AOP的工作重心在于如何将增强应用于目标类的连接点上. 主要包括两个工作: 1. 如何通过切点和增强定位到连接点. 2. 如何在增强中编写切面的代码.
以上是关于Java spring -- AOP的主要内容,如果未能解决你的问题,请参考以下文章