Spring框架入门(二)
第一章 使用注解配置Spring
1.1 步骤
1.1.1 为主配置文件引入新的命名空间
导入命名空间,改变key-type,并在key最后加上/,将
复制到key的最后,即可添加约束。
然后添加新的命名空间:
打开XML文件,然后编辑命名空间,点击Add,在location hint中选择自己刚刚导入的约束,并将其除去最后一段文字后复制到Namespace Name中,因为之前的约束我们没有添加标签,而一个XML只能有一个默认命名空间,所以这个我们要添加标签,一般的习惯是将Namespace中的最后一个单词复制过去当作标签。
1.1.2 开启使用注解代理配置文件
不仅只扫描包,还扫描包的子孙包。
Spring4.0的新特性,我们需要再导入一个新的包
1.1.3 在类中使用注解完成配置
制定完配置扫描后便可进行注解的书写,
可以用括号来指定Bean的名字
后来又出现了几个注解,
推荐能够使用分层的注解
可以使用Scope注解来规定单例还是多例,单例是singleton(默认值),多例是prototype。
使用@value来进行注入,可以把注解放到成员变量上,也可以把注解放到set方法上。
区别:加在成员变量上是直接对filed(与反射相关)的字段进行赋值,放在setName上的是通过set方法赋值。第一种赋值方式破坏了封装性,推荐使用第二种。但是因为第一种看着舒服,很多人都用第一种。
补:如果只给value属性赋值,且属性只有一个,那么可以省略不写。
引用类型注入:
首先要把对象类型注册,再将Car对象的属性赋值,接下来有几种方式:
1.在容器中寻找Car,找到后自动装配,方便,但是如果有多个类型会出现问题,比如容器中有三辆车,如何做到呢,除了自动扫描,我们还可以用原始的方法来向容器中装入car,我们无法选择是用哪一个对象。
2.针对上面的我们可以使用辅助注解解决,和自动注解配套使用
3.(推荐)可以通过@resource注解来直接指定,直接输入需要注入对象的名字
开始与销毁的方法(要使用singleton,不是singleton的话创建完对方就不管了):
第二章 STS插件的安装
2.1 手动安装插件
2.2 使用老师的Eclipse
2.3 Spring装好插件的Eclipse
第三章 Spring与junit整合测试
每次测试时都要把applicationContext重写一遍,且路径换了的话要改的也太多,于是Spring整合了Junit的测试,首先我们需要导包, ,将
包导入,进行如下书写即可。
书写后的使用:
第四章 Spring中的aop
4.1 aop思想
横向重复,纵向抽取。
4.2 Spring中的AOP概念
指挥Spring帮我生成代理对象,而不是像以前一样自己写。
4.3 Spring实现aop的原理
动态代理和cglib代理都可以实现,但是如果代理对象有接口则优先使用动态代理,没有接口则使用cglib代理。
4.3.1 动态代理
被代理对象必须要实现接口,才能产生代理对象,如果没有接口将不能使用动态代理技术。
记住:动态代理针对的是接口,代理对象实现了被代理对象的接口。
4.3.2 cglib代理
第三方代理技术,cglib代理,可以对任何类生成代理,代理的原理是对目标对象进行继承代理。
比方说我给userService生成代理对象,那么生成的是它的子类。
若目标对象被final修饰,那么该类无法被cglib代理。
记住:cglib代理是代理对象继承了被代理对象
4.3.3 手动实现动态代理与cglib代理
userservice接口:
UserService:
每个方法都要进行事务的开启比较麻烦,我们用动态代理和cglib代理进行简化。
动态代理:
demo测试:
4.4 spring中的名词学习
4.5 spring中的aop演示
1 导包
spring的aop包
spring需要的第三方aop包
2 准备目标对象
3 准备通知
4 配置进行织入