BeanDefinition?org.springframework.beans.factory.config.BeanDefinitionBeanDefinitionBuilderAbstractBeanDefinition 以及派生类Bean 名称生成器:org.springframework.beans.factory.support.BeanNameGenerator
<bean name="..." ... />@Bean@Component@ImportBeanDefinitionRegistry#registerBeanDefinition(String,BeanDefinition)BeanDefinitionReaderUtils#registerWithGeneratedName(AbstractBeanDefinition,Be
anDefinitionRegistry)AnnotatedBeanDefinitionReader#register(Class...)SingletonBeanRegistry#registerSingletonBean 实例化(Instantiation)
FactoryBean(配置元信息:XML、Java 注解和 Java API )ServiceLoaderFactoryBean(配置元信息:XML、Java 注解和 Java API )AutowireCapableBeanFactory#createBean(java.lang.Class, int, boolean)BeanDefinitionRegistry#registerBeanDefinition(String,BeanDefinition)@PostConstruct 标注方法InitializingBean 接口的 afterPropertiesSet() 方法<bean init-method=”init” ... />@Bean(initMethod=”init”)AbstractBeanDefinition#setInitMethodName(String)Bean 延迟初始化(Lazy Initialization)
<bean lazy-init=”true” ... />@Lazy(true)Bean 销毁(Destroy),同时存在时,顺序从上到下:
@PreDestroy 标注方法DisposableBean 接口的 destroy() 方法<bean destroy=”destroy” ... />@Bean(destroy=”destroy”)AbstractBeanDefinition#setDestroyMethodName(String)1、如何注册一个spring bean?
2、什么是spring beandefinition?
代码
3、spring容器是如何管理注册bean?