Spring Framework

1. Spring Framework 架构

  1. Spring Framework 是Spring生态圈中最基础的项目,是其他项目的根基

2. IoC

2.1 IoC的引入和定义

  1. 代码书写现状: 耦合度较高
    解决方案: 使用对象时, 在程序中不要主动使用new产生对象, 转换为由外部提供对象, 即实现解耦
    IoC(Inversion of Control) 控制反转: 使用对象时, 由主动new产生对象转换为由外部提供对象, 对对象的创建控制权由程序转移到外部, 这种思想称为控制反转
  • 比如说下图所示, 如果在业务层使用new产生对象, 如果一开始new的是BookDaoImpl, 但是增加了BookDaoImpl2并使用该类, 就需要在业务层中修改new对象
  1. Spring技术对IoC思想进行了实现
  • Spring提供了一个容器, 称为IoC容器, 用来充当IoC思想的"外部"
  • IoC容器负责对象的创建, 初始化等一系列工作, 被创建或被管理的对象在IoC容器中统称为Bean
  • DI(Dependency Injection)依赖注入: 在容器中建立bean与bean之间的依赖关系的整个过程, 称为依赖注入, 例如上面提到的service依赖bookdao对象运行
  1. 目标: 充分解耦
  • 使用IoC容器管理Bean(IoC)
  • 在IoC容器内将有依赖关系的Bean进行绑定(DI)
    达到效果: 使用对象时不仅直接可以从IoC容器中获取, 并且获取到的Bean已经绑定了所有的依赖关系

2.2 IoC的入门案例

  1. 先导入包, 并且刷新Maven可以看到包成功导入
  2. resouce再new一个XML文件
  3. 配置Bean
  4. 获取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 关闭容器


posted @ 2025-06-26 15:14  awei040519  阅读(8)  评论(0)    收藏  举报