Spring AOP的原理
Spring会在用户获取对象时,生成目标对的代理对象,之后根据切入点规则,匹配用户连接点,得到切入点,当切入点被调用时,不会直接去找目标对象,而是通过代理对象拦截之后交由切面类中的指定的通知执行来进行增强。
Spring自动为目标对象生成代理对象,默认情况下,如果目标对象实现过接口,则采用java的动态代理机制,如果目标对象没有实现过接口,则默认采用cglib动态代理。开发者可以在spring中进行配置,要求无论目标对象是否实现过接口,都强制使用cglib动态代理。
AOP的注解方式实现
spring也支持注解方式实现AOP,相对于配置文件方式,注解配置更加的轻量级,配置、修改更加方便,是目前最流行的方式了呢~
1.开启AOP的注解配置方式
2.将指定的类标志为一个切面
3.配置通知 制定切入点规则
**通过注解的配置 等价于配置文件的配置
4.如果一个切面中多个通知 重复使用同一个切入点表达式,则可以将该切入点表达式单独定义,后续使用,注意,在当前切面中通过注解定义的切入点只在当前切面中起作用,其他切面看不到。
5.在后置通知的注解中,也可以额外配置一个returning属性,来指定一个参数名接收目标方法执行后的返回值
6.在异常通知的注解中,也可以额外配置一个throwing属性,来指定一个参数名接收目标方法抛出的异常对象