1. 面向切面编程(Aspect Oriented Programming,AOP)
AOP:以切面为核心,确定切面的执行时间以及执行位置,底层实现是动态代理。
AOP的作用:①在不改动源代码的情况下,增加功能;②使业务代码和非业务代码分离。
1.1 切面(Aspect):给目标方法增强的功能代码,一般是非业务方法。
1.2 通知(Advice):表示切面和业务方法的相对执行时间,通过@Before、@After等注解指定。
1.3 执行位置:为哪些业务方法添加切面,通过切入点表达式execute指定。
1.4 切入点(PointCut):一个或多个连接点(JointPoint)的集合,表示为切面功能执行的位置。
1.5 连接点(JointPoint):需要功能增强的目标方法。
2. 使用aspectJ框架实现第一个AOP小程序
2.1 aspectJ:一个开源的aop框架,两种实现方式:①使用xml的配置文件(主要是事务功能);②基于注解的方式。
2.2 pom.xml文件加入aspectJ依赖
2.3 spring配置文件添加aspectJ-autoproxy标签,会为目标对象创建代理对象,并覆盖原先的目标对象,组件扫描器标签如果没有记得加。如果目标类实现了接口,使用jdk动态代理;如果没实现接口,使用cglib代理。如果实现了接口,又想使用cglib,在spring配置文件的<aop:aspectJ-au