AOP
1、什么是aop?
AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,是OOP的延续,而这里的切面则代表动态的将代码加入到指定的方法或位置上,一句话总结:在不改变原有代码的条件下,对该有功能进行扩展;
2、AOP作用
可以将日志记录、性能统计、安全控制、事务处理、异常处理等代码从业务逻辑代码中分离出来,放到一个非业务逻辑的方法中,进而改变这些行为的同时不影响业务逻辑代码;实现了减少重复代码以及模块间低耦合的目的,以此来达到专心处理业务逻辑代码,不用管日志记录、事务控制及权限控制等。
3、aop中的几个术语
1、切面(aspect)加上注解:@Aspect的类
2、通知(advice),总共有五种类型通知
3、目标(target)joinPoint.getTarget()方法获取
4、代理(proxy)joinPoint.getThis()方法获取
5、连接点(joinPoint)可以通过通知方法的参数JoinPoint来获取
6、切点(pointCut) 通过切点表达式匹配到的方法
4、有几种通知类型?分别在什么时候执行?(面试)
1、@Before:前置通知,在方法执行之前执行
2、@After:后置通知,在方法执行后执行
3、@AfterReturning:返回通知,在方法返回执行结果之后执行
4、@AfterThrowing:异常通知,在方法抛出异常之后执行
5、@Around:环绕通知,围绕着方法执行
5、切入点表达式
如果切面类和目标类在同一包下,那么包名可以省略
除了包名不可以用* 号,其他都可以用*号表示
*
*
. *
( . . ) 所有IOC容器下的类的方法都适用
动态代理