在昨天完成了spring的IOC/DI 的注入和AOP的面向切面的编程后准备着手new plan
今天的目标:完成Aop的注入方式的实现,如果时间比较够的话,在尝试注解的方式注入测试
一.因为前面已经完成了AOP 的基本认识(今天就是XML方式配置AOP 改造为注解方式)
用到了注解---->就基本简化了Xml的基本配置,全部在实体的调用类里面通过
@Component 的注解在昨天的IOC/DI的注解类似的
A----->@Component("s") 注解ProductService 类注入bean,由spring管理
![v2-3e5fc54150251ee76bb15c3cccf7ac3b_b.jpg](https://img-blog.csdnimg.cn/img_convert/fdc88dc56925ca27676a553dd5f48b11.png)
B---->注解配置切面
@Aspect 注解表示这是一个切面
@Component 表示这是一个bean,由Spring进行管理
@Around(value = "execution(* com.how2java.service.ProductService.*(..))") 表示对com.fuwei.service.ProductService 这个类中的所有方法进行切面操作
上面的注入的方式在实体的调用的类里面的对应的地方
![v2-8594fd19f0d2a9f68f731a7bd8b70824_b.jpg](https://img-blog.csdnimg.cn/img_convert/b5c2570de3da58dd2c96ca737c22aa1d.png)
C----->applicationContext.xml前面的bean的配置去掉
![v2-5ffae6a39b4469abd77d04df3d947885_b.jpg](https://img-blog.csdnimg.cn/img_convert/cda65f2bdeeb5d8c37c0b978f1a8d700.png)
增加
连接到com.fuwei.aspect和com.fuwei.service里面的类
<context:component-scan base-package="com.fuwei.aspect"/>
<context:component-scan base-package="com.fuwei.service"/>
扫描包com.fuwei.aspect和com.fuwei.service,定位业务类和切面类
找到被注解了的切面类,进行切面配置
<aop:aspectj-autoproxy/>
![v2-91861177565b0b41d38e328bf6629c6b_b.jpg](https://img-blog.csdnimg.cn/img_convert/62c49df9cbea9c921792a7a560ea2d3d.png)
D----->最后的测试类
![v2-aff63572c6d2378d8671f5d5cc0e8440_b.jpg](https://img-blog.csdnimg.cn/img_convert/66fe64e7b4c004ebc040e0e83ffa40ff.png)
最后打印的效果和前面的XML的配置一样
![v2-157d6218443c063b83b1fa664641b860_b.jpg](https://img-blog.csdnimg.cn/img_convert/221f1e7ac96c44e8cf7ad822874f4b49.png)
简单总结一下注解的方式
1.开始还是context连接Xml----->调用里面的切片的注解方法
2.productService类里面获取bean的,再由spring对其操作
3.最后调用执行的doService方法------>调用切面的LoggerAspect---->doService
二.准备着手弄任务的spring&&Junit的测试
开始的准备工作相关的测试的jar包的下载---->junit-4.12.jar和hamcrest-all-1.3.jar
![v2-c26fbbc05cce89414b0a6e512c956261_b.jpg](https://img-blog.csdnimg.cn/img_convert/4af493ee6c145354f0f5c208ffb59d24.png)
接下来就是修改TestSpring里面的
修改TestSpring, 并运行
1. @RunWith(SpringJUnit4ClassRunner.class)
表示这是一个Spring的测试类
![v2-c2487a12831bc3cec5fa91ae2001ec0c_b.jpg](https://img-blog.csdnimg.cn/img_convert/dea0d8a0a9c84e35981964f88864ea20.png)
2. @ContextConfiguration("classpath:applicationContext.xml")
定位Spring的配置文件
![v2-7ce1f62b1a2ca7f9c039d9680b6c309c_b.jpg](https://img-blog.csdnimg.cn/img_convert/392e2567d4624840d80f23cfe56b3922.png)
3. @Autowired
给这个测试类装配Category对象
![v2-ba632218553e7ebc08db20b1807d3df1_b.jpg](https://img-blog.csdnimg.cn/img_convert/6729e49c714e015243297efd0380f36d.png)
4. @Test
测试逻辑,打印c对象的名称
![v2-81983c48ed9aeb016c3da57cfa53aa8b_b.jpg](https://img-blog.csdnimg.cn/img_convert/55f7e0786cfe641d635d0f667bf1a4c1.png)
最后的测试运行类
![v2-3dff2d525c98e75baac649221377c78d_b.jpg](https://img-blog.csdnimg.cn/img_convert/681deb05bd727afd9369b18b0e94af77.png)
里面没有一前的psvm----->不用每次都写PSVM--->这样不仅简化,而且运行测试也比较方便
简化就一个@test就可以了没有那么多的连接的建立和调用bean的执行的调用
![v2-60be5a3be2a96c1043ab4532b72ece1d_b.jpg](https://img-blog.csdnimg.cn/img_convert/0a759138a13b6b88b5fb344564c53db6.png)
最后的打印的测试结果
test的运作绿色--->表示成功
![v2-75fa67f82532c655aa908908bcfe48d6_b.jpg](https://img-blog.csdnimg.cn/img_convert/b5185e78968e18d5e2dc838386bc656d.png)
console里面也打印了测试想要得到的结果
![v2-c5cab009b51821c86bbdf5cda77e1fa0_b.jpg](https://img-blog.csdnimg.cn/img_convert/0a950f70310c0ea67fe7e5d97ac1a1df.png)
注解的测试就完成了
简单的总结一下spring&&Junit的配置主要是简化了applicationContext.xml里面的bean的配置,那个bean的配置在实体的类里面的通过注解的方式注入,这样简化了不少,只是要注意怎么样去获取context的Xml的链接,还有注解的对应的jar包要导入,还有后面的测试没有以前的必须还要写一个psvm例子测试,还有麻烦的获取context的获取,new 类的实例化,最后的调用类
今天完成的事情:
1.完成了想关于Aop 的注入的方式是怎么实现的,实现的和原来的Xml的配置有哪些的区别,它的好处 ,给我们带来的方便看简洁
2.完成了Spring&&Junit的测试的实现,还是和以前的通过psvm的方法来测试的好处,还有不是每个地方都容易些psvm的测试类的,还是通过@Test的方式更加的方便.
明天的计划:编写单元测试代码(编写单元测试的代码,注意,你也可以尝试一下,先写单元测试的代码,再写接口,再写实现类。--->这个人任务以前的有交叉--->我就在这个项目基础上测试)
今天遇到的困难:今天完成的还是比较顺利,因为前面的spring的IOC/DI的学习原生的XML配置和注解的两种方式,前面的完成基本的步骤是差不多的,后面的完成起来也响应的要好一些,感觉还是有收获的,把spring的bean的XML配置和注解了解的比较多了,还有对XML的配置有了了解更多
spring和Junit的收获:学习了IOC/DI、Aop怎么通过XML和注解方式获取对象的值,这个得了解和熟悉度更加的熟悉了,还有spring&&Junit的测试,不再用以前的psvm的测试类方法现在就是主要的@Test的方式来测试,这个单元的测试比较方便,不会那么麻烦的去获取context的链接,还有去调用实体的类方法,可以通过注解的方式便捷有快速
荆轲刺秦王----->加油 坚持(学习师兄的帮助和鼓励)