这一章是关于AOP的面试话题,相对IOC来说,AOP的面试问题并不多。
下面我们来到正题:
AOP就是面向切面编程,我们将那些与业务无关、但却影响多个对象的行为和逻辑抽取出来复用
扩展:
这样做可以降低耦合,便于维护。
话题引导:
项目中,AOP我们一般用在日志、缓存、spring实现的事务。
扩展:
实现原理就是利用AOP的环绕通知和切点表达式来获取:类、方法、注解、请求方式等等信息,然后将他们按照需求实现逻辑或存入数据库等等。
话题引导:
比较典型的例子是spring实现的事务。
扩展:
我们通过AOP功能,对方法的前后进行拦截,在方法前开启事务,在方法后根据情况提交或者回滚事务。
话题引导:
以上说的都需要用到AOP提供的注解。
扩展:
AOP注解里,
@Aspect表示当前类是一个切面,并注册到IOC容器里。
@PointCut用于定义一个切点。分两种匹配方法:方法签名匹配 execution、自定义注解匹配@annotation
存在多个切面时@Order注解用于定义切面的执行顺序。数值越小越优先,为负数时在默认执行的执行顺序之后执行。
剩下还有几个通知注解@Around、@After、@Before、@AfterRetuening、@AfterThrowing
可以讲讲开发中会遇到的问题:
总结:
总的来说,AOP就是用来增强方法的。