文章目录
SpringFramework AOP(一)
什么是AOP
AOP及面向切面编程,切面帮助我们模块化横切关注点
关注点
及可以抽出来的公共功能,如安全、事务、日志打印等
横切
及可以可以影响应用的多个功能
AOP的语述
通知
切面的工作意为通知
我认为:抽化出来的代码总称
五种通知类型
在代码中的体现
@Aspect
public class AspectsTest {
//这里为通知:前置通知
@Before(...)
public void aopBeforeTest(){
}
}
连接点
能插入切面的一个点
我认为:所有能执行通知的地方
代码中的体现
//这个接口所实现的类的方法即为连接点
public interface AopTest {
public String AopTestPrint();
}
切点
及多个连接点的集合
代码中的体现
@Aspect
public class AspectsTest {
//这里则是定义的 切点
@Before(value = "execution(* com.test.springdome01.AopTest.*(..))")
public void aopBeforeTest(){
}
}
切面
切面为通知和切点的结合
代码中的体现
//已Aspect注解的类及为切面,里面包含通知和切点
@Aspect
public class AspectsTest {
//这里为通知:前置通知 // 这里则是定义的 切点
@Before(value = "execution(* com.test.springdome01.AopTest.*(..))")
public void aopBeforeTest(){
}
}
引入
给现有类添加新方法或属性
对于织入,引入更像标注在哪,添加的方法还不是类的一部分
代码中的体现
织入(Weaving)
把切面应用到目标对象并创建的代理对象的过程
对于引入来说,织入更像一个动态的行为,及添加的方法开始属于类的一部分。
可以通过编译期、类加载期、运行期进行织入
编译期
AspectJ
类加载期
AspectJ5的加载时织入
运行期
springAOP在运行期动态的生成代理对象来实现织入切面的