栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Spring Bean的创建过程

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Spring Bean的创建过程

大体分为实例化(Instantiation)和初始化(initialization)

实例化:是对象创建的过程。比如使用构造方法new对象,为对象在内存中分配空间。

初始化:是为对象中的属性赋值的过程

通过xml或者注解获得beanDifination,存入map

BeanPostProcessor接口   

 

可以通过其中的after和before方法对bean对象进行操作

spring中有非常多类或接口继承实现了这个BeanPostProcessor接口。

前置处理器作用:  未知!

一般都是用后置处理器。

实例化 实例化前:

    

    可以在这个before方法中返回某个自定义对象。此时还没有创建对象,在构造方法前执行。

实例化:

  如果在上面的before方法中自定义了返回的对象,略过这步操作。

  没有的话就针对BeanDifinition中定义的内容生成对象。

  如果此类有多个构造参数,会默认调用无参构造器创建对象,没有无参就报错。

  否则可以用Autowired手动选择构造器。

  多个Autowired的话最多只能有一个required = true(默认就是true),不然也会报错。

  多个false的话,spring会自动选择构造器。

        自动选择的逻辑是,先找参数最多的,看看ioc中是否有足够的能够满足这个构造方法每个参数的bean(先根据Type匹配,再根据名字匹配);  否则再找参数个数第二的。。。

        如果有多个多参构造器都满足要求,谁写前面用谁。

实例化后:

      同样是after方法操作对象。

属性填充

初始化 前: 

实现接口

InstantiationAwareBeanPostProcessor
初始化中:

方式一: 

@PostConstruction 方法注解,在属性填充后先执行带有这个属性的方法。

方式二:

实现这个接口

 

后:
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/667440.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号