Spring框架之AOP面向切面编程
AOP就是一个代理类,通过其动态代理来增强代码的复用性,解除代码的耦合性
AOP的相关概念:
1.目标类也就是需要代理的对象
2.连接点(JoinPoint):理论上所有的方法都是连接点()
3.切入点(PointCut):目标类中需要增强的方法(deleteUser())
4.通知(advice):增强的方法(日志)
5.切面(aspect):通知所在的类叫做切面,也就是说增强方法所在的那个类叫做切面
6.织入:将通知插入到切入点这个过程叫织入
7.切入点表达式:在一系列连接点中将符合条件的切入点筛选出来的表达式叫做切入点表达式(回想一下sql语句)
execution(* 需要实现增强方法的那个类的全限定名以及方法签名),这是一个切入点表达式
Aop的入门案例:
1.首先需要导入jar包,首先是Spring框架的核心包以及核心包所依赖的jar包
然后再导入aop的jar及其依赖包,具体的包名需要查看jar文件夹下的aop的jar包
2.搭建项目的基本结构:
首先需要一个基本的类,然后在新建一个切面类,在切面类中定义一个通知,也就是需要增强的方法
3.配置spring的配置文件
1.首先需要引入aop的xml约束
2.声明一个目标对象的bean,bean里面放入id和class,id一般为类名,然后class为包名+类名
3.然后声明一个切面的bean,里面也是id和class,id是切面类的类名首字母小写,然后class是切面类的类名+包名
4.配置aop,让目标对象与通知之间产生联系,也就是让目标类与切面类中的增强方法产生联系
<aop:config>
<!–声明切点–>
<aop:pointcut expression=”execution(* 需要实现增强方法的那个类的全限定名以及方法签名)” id=”默认是方法名字”>
<!–配置切面+切点–>
<aop:aspect ref=”与切面类名字相同并且开头小写”>
<aop:after method=”切面类中的方法名” pointcut-ref=”aop:pointcut标签中的id”/>
</aop:aspect>
</aop:config>
需要注意的是:
当需要不同增强时需要两个不同的切面类