spring AOP
AOP(Aspect Oriented Programming),即面向切面的编程
1.它的连接点模型只能是方法的
2.它添加的主要功能有:事务管理,安全,日志,检查,锁等
切面
它是通知和接入点的结合,通知和切入点定义了切面的全部内容——它的功能,在何时何地完成功能
连接点
它是在程序执行过程中某个特定的点,AOP只支持方法连接点
切入点
它指一个或多个连接点
通知
1.它定义了切面是什么,以及何时使用,除了描述切面要完成的工作,还要解决这个工作何时完成的问题。
2.种类:
1.前置通知:在切入点匹配的方法执行之前运行,使用`@Before`注解来声明
2.返回后通知:在切入点匹配的方法返回的时候运行,使用`@AfterReturning`注解来声明
3.抛出后通知:在切入点匹配的方法执行时抛出异常的时候运行,使用`@After Throwing`注解来声明
4.后通知:不论切入点匹配的方法是正常结束的,还是抛出异常结束的,在它结束后 后通知都会运行,使用`@After`注解来声明
5.环绕通知:既在切入点匹配的方法执行之前又在执行之后运行。且它可以决定这个方法在什么时候执行,如何执行,甚至是否执行。使用`@Around`注解来声明
目标对象
被一个或多个切面所通知的对象,也叫被通知对象
AOP的工作模式
1.静态代理:在代理中实现接口并创建实现类对象,在对实现类的方法增加功能
2.动态代理:实现implements InvocationHandler
接口