标签:href bean 初始化 code 用户 closed 接口 instance protect
Spring Bean生命周期:
实例化 -> 属性赋值 -> 初始化 -> 销毁
实例化 和 属性赋值 对应构造方法和setter方法的注入,
初始化 和 销毁 是用户能自定义扩展的两个阶段。
主要逻辑都在doCreate()方法中,逻辑很清晰,就是顺序调用以下三个方法,这三个方法与三个生命周期阶段一一对应,非常重要,在后续扩展接口分析中也会涉及。
源码如下,能证明实例化,属性赋值和初始化这三个生命周期的存在。
// 忽略了无关代码 protected Object doCreateBean(final String beanName, final RootBeanDefinition mbd, final @Nullable Object[] args) throws BeanCreationException { // Instantiate the bean. BeanWrapper instanceWrapper = null; if (instanceWrapper == null) { // 实例化阶段! instanceWrapper = createBeanInstance(beanName, mbd, args); } // Initialize the bean instance. Object exposedObject = bean; try { // 属性赋值阶段! populateBean(beanName, mbd, instanceWrapper); // 初始化阶段! exposedObject = initializeBean(beanName, exposedObject, mbd); } }
标签:href bean 初始化 code 用户 closed 接口 instance protect
原文地址:https://www.cnblogs.com/mww-NOTCOPY/p/12802214.html