Spring Bean的实例化过程

计算机软件开发 2024-9-16 00:34:50 122 0 来自 中国
一、媒介

对于写Java的步伐员来说,Spring已经成为了现在最盛行的第三方开源框架之一,在我们充实享受Spring IOC容器带来的红利的同时,我们也应该思量一下Spring这个大工厂是怎样将一个个的Bean生产出来的,本期我们就一起来讨论一下Spring中Bean的实例化过程。
1.1 Spring Bean 生命周期步调伪代码

1、类
2、推断选择构造方法(默认调用类无参构造方法)
3、寻常对象(new出来)
4、为对象的属性(加了注解的,如@Autowired)进行依赖注入
5、初始化前:判断方法上是否加了@PostConstruct注解
6、初始化:判断是否实现了InitializingBean接口,反射调用afterPropertiesSet方法
7、初始化后:进行AOP
8、署理对象
9、放入单例池Map
10、成为Bean
1.1.1 Spring调用类的构造方法

Spring调用类的构造方法有以下环境:

  • Spring默认会调用类的无参构造方法创建类。
  • 加了仅有的一个有参构造方法(无参构造方法就没有了),Spring会调用该有参构造方法创建类。
  • 加了两个以上的有参构造方法,Spring报错,由于Spring也不清楚要调用哪个构造方法来创建对象。
  • 加了两个以上的有参构造方法,并在一个指定的构造方法上加了@Autowired注解,Spring则调用该构造方法来创建对象。
二、两个阶段

这里起首声明一下,Spring将管理的一个个的依赖对象称之为Bean,这从xml设置文件中也可以看出。
Spring IOC容器就似乎一个生产产物的流水线上的呆板,Spring创建出来的Bean就似乎是流水线的尽头生产出来的一个个风雅绝伦的产物。既然是呆板,总要先启动,Spring也不破例。因此Bean的一生从总体上来说可以分为两个阶段:

  • 容器启动阶段
  • Bean实例化阶段
容器的启动阶段做了很多的预热工作,为反面Bean的实例化做好了充实的准备,我们起首看一下容器的启动阶段都做了哪些预热工作。
2.1 容器启动阶段

2.1.1 设置元信息

我们说Spring IOC容器将对象实例的创建与对象实例的使用分离,我们的业务中须要依赖哪个对象不再依赖我们本身手动创建,只要向Spring要,Spring就会以注入的方式交给我们须要的依赖对象。但是,你不干,我不干,总要有人干,既然我们将对象创建的使命交给了Spring,那么Spring就须要知道创建一个对象所须要的一些须要的信息。而这些须要的信息可以是Spring已往支持最美满的xml设置文件,大概是其他情势的比方properties的磁盘文件,也可以是现在主流的注解,乃至是直接的代码硬编码。总之,这些创建对象所须要的须要信息称为设置元信息。
您需要登录后才可以回帖 登录 | 立即注册

Powered by CangBaoKu v1.0 小黑屋藏宝库It社区( 冀ICP备14008649号 )

GMT+8, 2024-11-22 16:15, Processed in 0.152168 second(s), 32 queries.© 2003-2025 cbk Team.

快速回复 返回顶部 返回列表