Spring的AOP开发

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

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

 

 

Spring整合Junit4测试: 

传统测试类写法缺点:

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

2. 代码难于维护

此时:

1. 导包:

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

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

创建容器:

003VxnK9zy79ov9WU473f&690

指定容器匹配路径:

003VxnK9zy79ovaUx8N25&690

从容器中获取对象:

003VxnK9zy79ovbuzag68&690

测试:

003VxnK9zy79ovc2B3Jcb&690
 

 

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. 生成代理类(配置文件)

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

003VxnK9zy79ovpGFcF95&690

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

 

配置切点和切面:

003VxnK9zy79ovqCbEL1b&690

切点表达式语法:

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

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

 

5. 此时即可测试。

 

 

SpringAOP开发流程(注解):

1. 导包,同上

2. 准备目标类,同上

3. 准备通知类,同上

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

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

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

003VxnK9zy79ovCsXBk16&690

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

类上配置:

003VxnK9zy79ovD4I50d6&690

抽取切点表达式:

003VxnK9zy79ovDz19B4f&690

方法上配置:

003VxnK9zy79ovKwh2m56&690

003VxnK9zy79ovKL3Hn95&690
 

6. 此时即可测试。

 

 

 

 

 

未完待续……

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值