Spring Framework
1. Spring Framework 架构
- Spring Framework 是Spring生态圈中最基础的项目,是其他项目的根基
2. IoC
2.1 IoC的引入和定义
- 代码书写现状: 耦合度较高
解决方案: 使用对象时, 在程序中不要主动使用new产生对象, 转换为由外部提供对象, 即实现解耦
IoC(Inversion of Control) 控制反转: 使用对象时, 由主动new产生对象转换为由外部提供对象, 对对象的创建控制权由程序转移到外部, 这种思想称为控制反转
- 比如说下图所示, 如果在业务层使用new产生对象, 如果一开始new的是BookDaoImpl, 但是增加了BookDaoImpl2并使用该类, 就需要在业务层中修改new对象

- Spring技术对IoC思想进行了实现
- Spring提供了一个容器, 称为IoC容器, 用来充当IoC思想的"外部"
- IoC容器负责对象的创建, 初始化等一系列工作, 被创建或被管理的对象在IoC容器中统称为Bean
- DI(Dependency Injection)依赖注入: 在容器中建立bean与bean之间的依赖关系的整个过程, 称为依赖注入, 例如上面提到的service依赖bookdao对象运行
- 目标: 充分解耦
- 使用IoC容器管理Bean(IoC)
- 在IoC容器内将有依赖关系的Bean进行绑定(DI)
达到效果: 使用对象时不仅直接可以从IoC容器中获取, 并且获取到的Bean已经绑定了所有的依赖关系
2.2 IoC的入门案例
- 先导入包, 并且刷新Maven可以看到包成功导入

- resouce再new一个XML文件

- 配置Bean

- 获取IoC容器和获取Bean

业务层里面仍然有new,还没做到解耦效果

2.3 DI的入门案例

5.删除业务层中使用new的方式创建的dao对象



3. Bean的基础配置
3.1 Bean的别名配置


3.2 Bean的作用范围(单例与非单例配置)
- bean默认为单例

- 打印取出的两个bean的地址,可以看到地址都相同,所以证明是单例
改写配置增加scope="prototype",控制一个bean造出来的对象不同


4. Bean的实例化三种方式
4.1 构造方法(常用)
- bean本质上就是对象,创建bean使用构造方法完成



4.2 静态工厂(了解)




4.3 实例工厂(了解)




4.4 FactoryBean(实用)
- 针对4.3做了改良

配置里返回的是getObject()对象


- 可以看到Bean对象是单例, 若要非单例, 则需改写工厂里实现的Bean函数"isSingleleton"



5. Bean的生命周期
- bean生命周期: bean从创建到销毁的整体过程
- bean生命周期控制: 在bean创建后到销毁前做一些事情
- 初始化容器的操作顺序: 1. 创建对象 2. 执行构造方法 3. 执行属性注入(set操作) 4. 执行bean初始化方法
5.1 两种生命周期控制方法
5.1.1 配置生命周期控制方法


- 运行程序, 下图未出现销毁操作, 因为程序运行在Java虚拟机, 虚拟机退出未给bean销毁的机会


5.1.2 使用接口(了解)



5.2 关闭容器




浙公网安备 33010602011771号