spring中bean的创建
来源:互联网 发布:社区服务网络是什么 编辑:程序博客网 时间:2024/05/21 06:03
问题 1 : Bean 的创建时机
bean 是在什么时候被创建的,有哪些规则?
容器初始化的时候会预先对单例和非延迟加载的对象进行预先初始化。其他的都是延迟加载是在第一次调用getBean 的时候被创建。从 DefaultListableBeanFactory 的 preInstantiateSingletons 里可以看到这个规则的实现。
问题二:Bean 的创建过程
对于 bean 的创建过程其实都是通过调用工厂的 getBean 方法来完成的。这里面将会完成对构造函数的选择、依赖注入等。
无论预先创建还是延迟加载都是调用getBean实现,AbstractBeanFactory 定义了 getBean 的过程
GetBean 的大概过程:
1、先试着从单例缓存对象里获取。
2、从父容器里取定义,有则由父容器创建。
3、如果是单例,则走单例对象的创建过程:在 spring 容器里单例对象和非单例对象的创建过程是一样的。都会调用父类 AbstractAutowireCapableBeanFactory 的 createBean 方法。 不同的是单例对象只创建一次并且需要缓存起来。 DefaultListableBeanFactory 的父类 DefaultSingletonBeanRegistry 提供了对单例对象缓存等支持工作。所以是单例对象的话会调用 DefaultSingletonBeanRegistry 的 getSingleton 方法,它会间接调用AbstractAutowireCapableBeanFactory 的 createBean 方法。
如果是 Prototype 多例则直接调用父类 AbstractAutowireCapableBeanFactory 的 createBean 方法。
详情请参考:http://singleant.iteye.com/blog/1177358
- spring中bean的创建
- spring中bean的创建
- Spring中常见的bean创建异常
- spring中bean创建的细节
- Spring中bean工厂创建bean的三种方式
- spring-在普通类中创建spring的bean实例
- spring的bean的创建
- spring中管理的Bean的创建流程
- Spring中创建bean的三种方法
- Spring中创建bean的三种方法
- Spring中创建bean的三种方式
- spring中beanfactory和applicationcontext创建bean的区别
- Spring Bean 的创建方式
- spring -bean 的创建过程
- spring创建bean的方式
- spring创建bean的方式
- spring bean 的创建过程
- Spring 创建bean的时机
- mybatis generator 生成完整的.xml
- Linux搭建VPN
- 时间给你一个缝 你就想往里转-兄弟连IT教育
- 网络编程-TCP状态图详细说明 没有不懂的
- 360加固之libjiagu.so脱壳及dex dump
- spring中bean的创建
- 常用基本逻辑电路相关介绍
- IDEA 14配置jdk,tomcat及热部署
- android sdcard存储方案(基于wrapfs文件系统)
- easyui超链接中使用session值
- AJAX访问PHP
- C# 用Attribute实现AOP事务
- [Leetcode]Search in Rotated Sorted Array
- 观《绣春刀》后作