首先是STS插件:(Spring Tool Suit)
网上找资源/直接使用Spring官方安装好插件的eclipse
Spring整合Junit4测试:
传统测试类写法缺点:
1. 测试代码冗余,频繁准备环境
2. 代码难于维护
此时:
1. 导包:
4+2、spring-aop、spring-test、junit4类库
2. 在测试类中使用注解:
创建容器:
指定容器匹配路径:
从容器中获取对象:
测试:
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. 生成代理类(配置文件)
配置目标对象和通知对象:
引入AOP约束:Spring解压目录下
配置切点和切面:
切点表达式语法:
* xxx.xxx.xxx.*aaa.*(..):表示在xxx.xxx.xxx包下所有以aaa结尾的类的任意参数和返回值的任意方法
* xxx.xxx..*aaa.*(..):表示在xxx.xxx包中以及所有子包中以aaa结尾的类的任意参数和返回值的任意方法
5. 此时即可测试。
SpringAOP开发流程(注解):
1. 导包,同上
2. 准备目标类,同上
3. 准备通知类,同上
4. 在配置文件中开启注解代替XML配置"开关":
配置目标对象和通知对象:同上
配置 自动检测注解完成代理:
5. 使用注解代替XML配置:
类上配置:
抽取切点表达式:
方法上配置:
6. 此时即可测试。
未完待续……