步骤:
1.引入依赖
2.创建配置文件
3.创建切面类
4.创建接口类 和实现类
5.创建测试类
第一步:引入依赖
主要引入以下jar包坐标:
spring-context包
spring-test包
aspect jweaver包(1.8.7版本以上)
junit包
第二步:创建配置文件
开启注解包,用于创建类对象,如下图
2.使用<aop: config> </aop:config>标签引入aop约束,如下图
3.在<aop: config>标签内注入aspect切面对象,如下图
4.由于上图中aspect切面对象,引用于Log对象,因此要使用bean对象来创建Log对象,如下图
aspect‘对象报红错误,是因为我们还没有创建这个类,在第三步,我们会创建aspect类
5.在aspect切面中,配置切点,如下图
对于上面execution中的表达式,做一下解释:
第一个 * 表示的是任意的返回值类型
第二个 * 表示的是任意的类
第三个 * 表示的是类中任意的方法
最后(..)表示的是方法中任意的参数
总结一下上面图的意思:
只要是位于cn.kgc.impl包下面的类,不管类中有什么方法,不管方法的返回值类型是什么,也不管方法中的参数是什么,都被认为是符合条件的切点
6.在aspect切面中设置通知类型和被通知的切点
如下图
解释一下<aop></aop>标签中的内容;
1. 冒号后面的 before 、after、after-throwing 、around指的都是通知的类型:前置通知、后置通知、异常通知、环绕通知
2.method: 后面的 “ before ”、“after”、“’ after-throwing‘、”around“指的是我们在切面类中定义的增强方法,我们在第三步,创建切面类的时候要创建这些方法
3.pointcut-ref= “ pointcut”指的是要被通知(方法增强)的切点(类)
第三步:创建切面类
创建切面类的路径名称要和,我们刚才在配置文件中设置的名称保持一致,就是下面这个路径
创建好aspect切面类之后
按照配置文件中写好的各种通知方法名,创建通知方法,如下
第四步:创建接口和实现类
1.创建接口Dao
在接口中定义一个抽象方法
public void print ( );
2.创建接口实现类
注意:实现类的全限定类名,要和我们刚才在配置文件中所设置的保持一致,就是下面这个路径:
1.所以我们创建的实现类路径应该是:
cn.kgc.impl.DaoImpl
2.实现接口中的抽象方法,如下图
第五步:编写测试类
1.整合spring和junit包
2.读取配置文件
3.注入dao层对象
4.调用dao层方法
如下图