Spring的AOP开发

原文链接: https://my.oschina.net/u/3392125/blog/869339

首先是STS插件:(Spring Tool Suit) 

网上找资源/直接使用Spring官方安装好插件的eclipse

 

 

Spring整合Junit4测试: 

传统测试类写法缺点:

1. 测试代码冗余,频繁准备环境

2. 代码难于维护

此时:

1. 导包:

4+2、spring-aop、spring-test、junit4类库

2. 在测试类中使用注解:

创建容器:

Spring的AOP开发_第1张图片

指定容器匹配路径:

Spring的AOP开发_第2张图片

从容器中获取对象:

Spring的AOP开发_第3张图片

测试:

Spring的AOP开发_第4张图片
 

 

Spring的AOP开发: 

AOP简介:Aspect Oriented Programming,面向切面编程。

在不修改源码的情况下,对程序进行增强,能够进行权限校验、日志记录、性能监控、事务控制。

 

AOP思想:过滤器、动态代理、拦截器都体现了AOP思想(纵向重复、横向抽取)

 

SpringAOP开发:Spring封装了动态代理技术来体现AOP思想

 

Spring封装的代理技术:

1. 动态代理(JDK):

动态代理技术必须基于接口。面向接口代理。所以单纯使用动态代理技术,无法完成对没有接口的类的代理

2. CGLib代理(第三方):

spring为了能够对所有类产生代理。引入第三方代理技术。CGLib代理。因为CGLib代理生成的代理类是目 标类的子类(继承)。不受接口的限制。可以对几乎任何类产生代理。(当目标类被final修饰,则不能代理)

Spring封装两种代理方式的目的,就是能够对所有类生成代理。

 

AOP部分开发术语:

Joinpoint:连接点。所有可以 可以被代理的方法,都叫连接点。

Pointcut:切点。真正的应用/即将应用代理的方法。

Advice:通知。我们想要对切点增强的代码,就称为通知。

Target:目标对象。切点所在的类的对象

Weaving:织入。将通知应用到目标对象的切点,形成代理对象的过程。

Proxy:代理对象。将通知应用到目标对象的切点形成的新对象。

Aspect/Advisor:切面。切点+通知=切面

 

 

SpringAOP开发流程(XML): 

1. 导包

4+2、spring-aop、spring-aspects、aop联盟、aspectJ-weaver、spring-test、junit4类库

2. 准备目标类

3. 准备通知类

4. 生成代理类(配置文件)

配置目标对象和通知对象:

Spring的AOP开发_第5张图片

引入AOP约束:Spring解压目录下

 

配置切点和切面:

Spring的AOP开发_第6张图片

切点表达式语法:

* xxx.xxx.xxx.*aaa.*(..):表示在xxx.xxx.xxx包下所有以aaa结尾的类的任意参数和返回值的任意方法

* xxx.xxx..*aaa.*(..):表示在xxx.xxx包中以及所有子包中以aaa结尾的类的任意参数和返回值的任意方法

 

5. 此时即可测试。

 

 

SpringAOP开发流程(注解):

1. 导包,同上

2. 准备目标类,同上

3. 准备通知类,同上

4. 在配置文件中开启注解代替XML配置"开关":

配置目标对象和通知对象:同上

配置 自动检测注解完成代理:

Spring的AOP开发_第7张图片

5. 使用注解代替XML配置:

类上配置:

Spring的AOP开发_第8张图片

抽取切点表达式:

Spring的AOP开发_第9张图片

方法上配置:

Spring的AOP开发_第10张图片

Spring的AOP开发_第11张图片
 

6. 此时即可测试。

 

 

 

 

 

未完待续……

转载于:https://my.oschina.net/u/3392125/blog/869339

你可能感兴趣的:(Spring的AOP开发)