Spring核心二:AOP XML配置实现
AOP概念:面向切面(方面、过程)编程,扩展程序不用修改源代码,而是做配置
AOP是个横向采取机制,取代了传统的纵向机制
传统方式和纵向抽取机制
AOP的横向抽取机制原理:动态代理
AOP专业术语:
Joinpoint(连接点):类里可以被增强的方法,这些方法被整成为连接点
Pointcut(切入点(重点)):类里有很多方法都可以被增强,但实际上真正被增强了的方法被称为切入点,比如UserDao类中有很多方法,但只增强了添加和删除方法,那么这两个方法被称为切入点
Advice(通知/增强(重点)):要增强的功能或逻辑,被称为增强
通知分为:
前置通知:在方法执行之前执行
后置通知:在方法执行之后执行
异常通知:发生异常时执行
最终通知:在后置通知之后执行
环绕通知:在方法执行之前和之后都执行
Aspect(切面(重点)):把增强,应用到具体方面上,这个过程被称为切面
还有引介、目标对象、织入、代理。
在Spring中要使用AOP,要用AspectJ框架实现
AspectJ不是Spring的一部分,但要配合使用才能用Spring的AOP
Spring2.0加强了对AspectJ的相关操作
要使用Spring的AOP操作必须先依赖AOP的相关jar
AOP的配置:
导入AOP约束
表达式的形式配置切入点(要增强的方法):
(1)增强Book类中的add方法,*:表示所有修饰范围,public、private等 ..:如果里面有参数也包含
。
。
。
还有种方式:execution(* abc*(..)) :表示所有方法里abc开头的方法会被增强
使用AspectJ做AOP在xml中的配置:
先在bean中实例化配置被增强类和增强类
然后配置切入点:用表达式的方式表示配置的是book类中的add方法,并起别名
然后配置切面:引用上文已实例化的的增强类,在切面里设置AOP的通知类型(前置、后置、最终等),最后配置要被增强的方法,即引用pointcut1
单独演示下环绕执行(比较特别)
XML中的配置;