# spring-lifecycle **Repository Path**: lanwind/spring-lifecycle ## Basic Information - **Project Name**: spring-lifecycle - **Description**: spring生命周期 - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2017-01-05 - **Last Updated**: 2021-06-17 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README spring生命周期分析: 调用结果展示: 现在开始初始化容器 2017-1-5 11:28:28 org.springframework.context.support.AbstractApplicationContext prepareRefresh 信息: Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@bbe0f0a: startup date [Thu Jan 05 11:28:28 CST 2017]; root of context hierarchy 2017-1-5 11:28:28 org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions 信息: Loading XML bean definitions from class path resource [beans.xml] 这是BeanFactoryPostProcessor实现类构造器!! BeanFactoryPostProcessor调用postProcessBeanFactory方法 ###[构造的是没有顺序] 这是InstantiationAwareBeanPostProcessorAdapter实现类构造器!! 这是BeanPostProcessor实现类构造器!! 2017-1-5 11:28:28 org.springframework.beans.factory.support.DefaultListableBeanFactory preInstantiateSingletons 信息: Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@70e434d: defining beans [beanFactoryPostProcessor,instantiationAwareBeanPostProcessor,beanPostProcessor,person,person2]; root of factory hierarchy InstantiationAwareBeanPostProcessor调用postProcessBeforeInstantiation方法 【构造器】调用Person的构造器实例化 InstantiationAwareBeanPostProcessor调用postProcessAfterInstantiation方法 InstantiationAwareBeanPostProcessor调用postProcessPropertyValues方法 【注入属性】注入属性address 【注入属性】注入属性name 【注入属性】注入属性phone 【BeanNameAware接口】调用BeanNameAware.setBeanName() 【BeanFactoryAware接口】调用BeanFactoryAware.setBeanFactory() BeanPostProcessor接口方法postProcessBeforeInitialization对属性进行更改! InstantiationAwareBeanPostProcessor调用postProcessBeforeInitialization方法 【InitializingBean接口】调用InitializingBean.afterPropertiesSet() 【init-method】调用的init-method属性指定的初始化方法 BeanPostProcessor接口方法postProcessAfterInitialization对属性进行更改! InstantiationAwareBeanPostProcessor调用postProcessAfterInitialization方法 InstantiationAwareBeanPostProcessor调用postProcessBeforeInstantiation方法 【构造器】调用Person的构造器实例化 InstantiationAwareBeanPostProcessor调用postProcessAfterInstantiation方法 InstantiationAwareBeanPostProcessor调用postProcessPropertyValues方法 【注入属性】注入属性address 【注入属性】注入属性name 【注入属性】注入属性phone 【BeanNameAware接口】调用BeanNameAware.setBeanName() 【BeanFactoryAware接口】调用BeanFactoryAware.setBeanFactory() BeanPostProcessor接口方法postProcessBeforeInitialization对属性进行更改! InstantiationAwareBeanPostProcessor调用postProcessBeforeInitialization方法 【InitializingBean接口】调用InitializingBean.afterPropertiesSet() 【init-method】调用的init-method属性指定的初始化方法 BeanPostProcessor接口方法postProcessAfterInitialization对属性进行更改! InstantiationAwareBeanPostProcessor调用postProcessAfterInitialization方法 容器初始化成功 Person [address=广州, name=张三, phone=110] 现在开始关闭容器! 【DiposibleBean接口】调用DiposibleBean.destory() 【destroy-method】调用的destroy-method属性指定的初始化方法 【DiposibleBean接口】调用DiposibleBean.destory() 【destroy-method】调用的destroy-method属性指定的初始化方法