bean生命周期
2024-05-08 13:23:30 0 举报
详细分析spring容器bean的生命周期
作者其他创作
大纲/内容
bean的后置处理器9次调用
addSingleton()
初始化前
InstantiationAwareBeanPostProcessor
UserServiceProxy.class
UserService.class
初始化后(AOP)
初始化后AOP:创建动态代理
初始化InitializationafterPropertiesSet
postProcessProperties
代理对象
初始化后
实例化后
doCreateBean()
determineCandidateConstructors
requiresDestruction
依赖注入(属性赋值)
可直接返回bean 停止创建AOP:解析切面
代理对象代理对象.target=普通对象
无参构造方法推断构造方法
注入属性PropertyValues@Autowired、@Resource、@Value 在这里DI
真正执行方法的时候是原目标对象
Bean
bean销毁
两个DataSource如果没有Configuration注解 jdbc使用自己的DataSource建立了新的数据库连接 所以事务管理器的DataSource没有生效
SmartInstantiationAwareBeanPostProcessor
实例化Instantiation
解决循环引用AOP
初始化前(@PostConstruct)
销毁
MergedBeanDefinitionPostProcessor
createBean()
postProcessMergedBeanDefinition
普通对象
Aware
@Autowired、@Value 预解析InjectionMetadata
终止赋值
优先使用byType匹配,其次使用byName匹配
指定实例化的构造函数
bean销毁回调
初始化前调用@PostContruct
postProcessAfterInstantiation
Bean加载
初始化(InitializingBean)
事务
postProcessAfterInitialization
如有一个构造方法则使用,若存在多个构造方法spring不知道选择哪个,会去找默认构造方法,如没有则报错
getEarlyBeanReference
DestructionAwareBeanPostProcessor
BeanPostProcessor
postProcessBeforeInstantiation
动态代理属性注入为空
实例化前
Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.huaxia.service.annotation.UserService]: No default constructor found; nested exception is java.lang.NoSuchMethodException: com.huaxia.service.annotation.UserService.<init>()
postProcessBeforeInitialization
属性赋值populate
0 条评论
下一页