学习笔记"/>
SpringIOC学习笔记
SpringIOC学习笔记
- 前言
- 一:MVC三层架构
- 二:IOC理论指导
- 三:写一个程序
- 四:创建对象的方式+Spring配置(别名+导入)
- 五:依赖注入+④Bean作用域
- 六:自动匹配:对实体类中的成员变量(其他类)进行自动装配-无注解版
- 七:自动装配:注解版
- 八:通过JavaConfig配置(不使用XML)
- 知识复习图
前言
这是基于B站大佬 狂神说,然后写的学习笔记。
一:MVC三层架构
V(View):视图层 ->JSP
C(Controller):控制层 ->Servlet
M(Model):模型层(操作数据) ->JavaBean实体类 JDBC (Service+Dao)
为了维护方便,Servlet的部分功能拆给了Service(login layout 查询全部用户)
Dao(CRUD)
二:IOC理论指导
①Dao接口 ②Dao接口实现类UseDao
③Service接口 ④Service接口实现类UseService
⑤测试类
结果:
发现:如果用户不想用这个这个Dao层接口实现类,想要用其他的Dao层接口实现类需要改④中的图所示的地方,若是一直改来改去 会发现特别特别的麻烦
改进方案:利用set接口实现动态输入方式
这种思想从本质上解决问题,程序不再主动管主动对象,而是被动的接受对象。大大降低系统的耦合性,可以更加专注在业务上,这就是IOC的原型!!!!!(也就是利用set方法)!!
IOC控制反转是一个设计思想,DI(依赖注入)是实现IOC的一种方法
对于面向对象编程,对象创建由程序自己控制,经过控制反转后,
将对象创建转移给第三方,也就是获取依赖对象方法反转了。
对于IOC方式:xml配置(xml方法配置Bean) ->定义和实现分离
+注解 ->定义和实现一体
+零配置(Bean定义,注解形式定义在实现类中)
控制反转是通过描述(XMl配置和注解)并且通过第三方(用户)去生产或获取特定对象的方式。
在Spring实现控制反转的是IOC容器,其实现方式是DI(依赖注入)
三:写一个程序
一:编写实体类
二:编写Spring容器文件,命名为beans.xml
三.测试
对于IOC理论的例子 进行改进:
多加了编写Spring配置文件
测试类
能得到同样的结果
四:创建对象的方式+Spring配置(别名+导入)
一:一般来说默认是无参构造创建对象
二:使用有参构造创建对象(构造器注入),下面将有三种方式 使用实体类中的有参构造方法
①.实体类
②.Spring配置文件
③测试
三:Spring配置(别名+导入)
别名:
导入:
五:依赖注入+④Bean作用域
注入->①构造器(即有参创建对象方式)+②set方法+③扩展方法
-> Constructor Property Constructor(C命名)+Property(P命名)
①构造器注入(Constructor)
②set方法注入(Property)
例子:1.Class Address
Class Student(Set Get toString就不截图了)
}
2.Spring配置文件beans.xml
3.测试
4.结果
③扩展方法方法(PropertyP空间+ConstructorC空间)
1.实体类
2.beans.xml
3.测试
4.结果
④bean作用域
六:自动匹配:对实体类中的成员变量(其他类)进行自动装配-无注解版
1.Cat 类
Dog类
People类
2.Spring配置文件 beans.xml和beans2.xml分别对应两种自动匹配autowired
3.测试类
ByName是需要匹配bean的id,所以要保证id要唯一
例如:Dog对应bean id必须为dog
ByType 是需要匹配bean的class,所以要保证class唯一 也就是如果有两个bean用的同一个class,例如:
也就是不止一个的时候,无法判断出要自动匹配导致无法自动匹配、
七:自动装配:注解版
Cat类
Dog类
1.@Autowired [set get方法可以不写,但是配置文件的Bean是必须要写的]
①ByType(默认)
People类
Spring配置文件
测试类结果
②ByName 则需要借助@Qualifier(value=”bean的id”)
People类
Spring配置文件
测试和结果 同上
2.@Resource 对于这个需要导入一个依赖
ByName(默认),若是ByName找不到,则会找到ByType实现
People类
Spring配置文件
测试
结果
3. .@Nullable,可以说明这个字段可以为null
4. 结论@Autowried和@Resource的set方法可以不写
[set get方法可以不写,但是配置文件的Bean是必须要写的]
使用注解开发:可以取代XML中bean对象的创建和其属性的注入
首先要理清楚一点:@Autowried和@Ressource是取代其他类在该类的引用的注入
下面将见识到如何使用如何取代XML中还有的bean对象创建和其属性的注入
@Component @Value 还有@Scope
Cat类-@Component(默认是类名-首字母小写) 也就是cat
Dog类
People类
Spring配置文件
测试
结果
知识补充:衍生注解业务层 Dao层 @Repository
Service层 @Service
Controlled层 @Controller
这三个注解 跟@Component作用是一样的
而@Component一般是用于普通pojo(实体类)的使用
结论:最佳用途XML用来管理Bean 而注解只完成属性的注入
XML维护方便,万能 写起来复杂
注解维护困难,不是自己类不能用 写起来简单
八:通过JavaConfig配置(不使用XML)
1.pojo实体类
2.JavaConfig类
3.测试类
知识复习图
更多推荐
SpringIOC学习笔记
发布评论