BeanDefinition
?org.springframework.beans.factory.config.BeanDefinition
BeanDefinitionBuilder
AbstractBeanDefinition
以及派生类Bean 名称生成器:org.springframework.beans.factory.support.BeanNameGenerator
<bean name="..." ... />
@Bean
@Component
@Import
BeanDefinitionRegistry#registerBeanDefinition(String,BeanDefinition)
BeanDefinitionReaderUtils#registerWithGeneratedName(AbstractBeanDefinition,Be
anDefinitionRegistry)
AnnotatedBeanDefinitionReader#register(Class...)
SingletonBeanRegistry#registerSingleton
Bean 实例化(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?