AOP是Spring框架面向切面的编程思想:
将涉及多业务流程的通用功能抽取并单独封装,形成独立的切面,在合适的时机将这些切面横向切入到业务流程指定的位置中。
1、Join point(连接点):程序执行过程中的一个点,如方法的执行或异常的处理。在Spring AOP中,连接点总是表示方法的执行。通俗的讲,连接点即表示类里面可以被增强的方法。(单个)
2、Point cut(切入点):切入点是与连接点匹配的表达式,用于确定是否需要执行通知。可以理解为需要被拦截的Join point。(范围)
3、Advice(增强/通知):指拦截到Join point之后所要执行的方法。(措施)
4、Aspect(切面):表示Point cut(切入点)和Advice(增强/通知)的结合。(方案)
五种通知工作:
1、@Before前置通知:在切入点运行前执行,不会影响切入点的逻辑。
2、@After后置通知:在切入点正常运行结束后执行,如果切入点抛出异常,则在抛出异常前执行。
3、@AfterThrowing异常通知:在切入点抛出异常前执行。
4、@AfterReturning返回通知:在切入点正常运行结束后执行。
5、@around环绕通知:功能最强大、常用,在切入点执行前后自定义一些操作。需要负责决定是继续处理join point(调用ProceedingJoinPoint的proceed方法)还是中断执行。
单纯使用OOP:
权限判断:在每个操作前都加入权限判断,重复代码冗余。
日志记录:在每个方法里的开始、结束、异常的地方手动添加日志,太繁琐。
使用AOP就可以借助代理完成这些重复的操作,能够在逻辑过程中,降低各部分之间的耦合了。