面试常见问题-Spring Bean是如何创建的?

简介: 面试常见问题-Spring Bean是如何创建的?

在Spring中,万物都是bean对象,每一个对象都可以封装成BeanDefinition,然后去生成bean对象。


所以首先第一步,spring要找到哪些bean需要实例化,第一种是xml的方式,如果需要实例化bean就在xml中配置bean标签,找到所有需要创建的bean,第二种注解方式,扫描所有添加了spring注解的bean,把所有的bean封装成一个BeanDefinition放入一个list.


第二步,循环list,通过BeanDefinition中的类全名称,通过反射进行实例化,属性注入,如果还有一个初始化的动作,也可以在属性注入后做,比如:init-method方法,比如实现了InitializingBean这个接口,然后在初始化的时候自动调用afterPropertiesSet该方法,我们可以在这个里面对bean做其他的操作,如果bean需要被代理,则通过后置通知,去生成代理的bean,如果bean实现了接口就使用jdk代理,如果没有实现就使用cglib,如果配置的优先级,则优先使用cglib。


第三步,完成后就将bean放入到spring的一级容器中。

相关文章
|
1月前
|
缓存 Java Spring
Spring循环依赖原理和Bean创建过程
Spring循环依赖原理和Bean创建过程
54 0
|
19天前
|
XML Java 数据格式
探秘Spring Bean的秘境:作用域篇【beans 三】
探秘Spring Bean的秘境:作用域篇【beans 三】
34 0
|
20天前
|
Java Spring
spring bean销毁
spring bean销毁
9 0
|
25天前
|
XML Java 数据格式
Spring Bean的生命周期解读
Spring IOC 容器的设计主要是基于BeanFactory和ApplicationContext两个接口,其中ApplicationContext是BeanFactory的子接口之一,换句话说BeanFactory是Spring IOC容器所定义的最顶层接口,而ApplicationContext是其高级接口之一,并且对于BeanFactory功能做了许多有用的扩展,所以在绝大部分的工作场景中,都会使用ApplicationContext作为Spring IOC 容器。
|
26天前
|
Java 数据库连接 数据库
【万字长文】Java面试八股文:深入剖析常见问题与解答
【万字长文】Java面试八股文:深入剖析常见问题与解答
95 0
|
30天前
|
druid Java 数据库连接
从入门到精通:掌握Spring IOC/DI配置管理第三方bean的技巧
从入门到精通:掌握Spring IOC/DI配置管理第三方bean的技巧
|
1月前
|
缓存 Java Spring
Spring5源码(25)-Spring填充bean属性及应用生命周期接口
Spring5源码(25)-Spring填充bean属性及应用生命周期接口
33 0
|
1月前
|
XML 缓存 Java
Spring5源码(24)-Spring解决bean之间的循环依赖
Spring5源码(24)-Spring解决bean之间的循环依赖
21 0
|
1月前
|
缓存 Java 测试技术
Spring5源码(23)-Spring通过工厂方法实例化bean
Spring5源码(23)-Spring通过工厂方法实例化bean
18 0
|
1月前
|
缓存 Java 测试技术
Spring5源码(22)-Spring通过有参构造方法实例化单例bean
Spring5源码(22)-Spring通过有参构造方法实例化单例bean
29 0

相关产品

  • 云迁移中心