spring
2022-06-20 00:12:04 0 举报
补充ioc流程
作者其他创作
大纲/内容
json
invokeInitMethods
populateBean
isSingleton:判断是否是单例对象getObjectType:获取对象类型getObject:用户可以按照自己任意的方式来创建对象
容器对象属性赋值
bean定义信息BeanDefinition
BeanPostProcessor:before
抽象接口定义读取配置文件的规范
Aware接口
afterPropertiesSet
<bean id =datasource class=com.alibaba.druid.pool.DruiddataSource/><property name= username value =${jdbc.username}/></bean>
如果我们需要在bean对象的创建过程中,详细;了解每一个步骤完成的进度我们应该怎么做?在不同的阶段要做不同的处理工作,应该怎么办?
BeanFactoryPostProcessor
yaml
解析@Import
可以使用以下三种任意实现创建对象:1.new方式2.代理方式3.反射.
给用户最后一次机会来进行赋值和调用操作
SpringBoot自动装配
BeanFactory
增强器
属性完成赋值操作
AOP
BeanPostProcessor 执行过程
后置处理器
Constructor ctor = clazz.getDeclareConstructor();Object obj = ctor.newInstance();
否
先获取Class对象Class clazz =Class.forName(\"完全限定名\");Class clazz =对象.getClass();Class clazz =类.class;Constructor ctor =class.getDeclareConstructor();Object obj =ctor.newInstance();
cglib
执行后置处理方法
new反射
在堆中开辟一块空间,属性都是默认值
getObject方法
包含的方法
自定义属性填充
是否实现了InitializingBean接口
env
执行初始化调用方法
properties
1.bean的生命周期?2.循环依赖?3.FactoryBean和beanFactory4.ApplicationContext和BeanFactory区别
@PostContruct@PreDestroy
执行前置处理方法
BeanFactoryRegistryPostProcessor
BeanPostProcessor
也包括
动态代理
jdk
实例化bean
实例化:分配内存,属性为默认值
完整的bean对象
ConfigurationClassPostProcessor
实例化过程包括
调用具体的初始化方法
使用对象
扩展
DefaultListableBeanFactory承接所有bean
FactoryBean
Environment
Refresh()
检查Aware相关接口:容器对象属性赋值
调用invokeInitMethods
为了方便使用,在容器创建的时候会提前加系统的相关属性加载到StandarEnvironment对象中,方便后续使用
XML
初始化bean执行init方法
PostProcessor
invokeAwareMethods
BeanDefinitionReader
FactoryBean:私人订制
区别
初始化
实例化
是
aop功能就是BeanPostProcessor下的一个子类实现,生成代理对象
BeanFactroy和FactoryBean
BeanPostProcessor:after
关闭容器时:销毁对象
解析@ComponentScan
解析@ImportResource
@Autowired@Value
观察者模式:监听器,监听事件
BeanFactory:标准化的流程流水线
属性填充,赋值
IOC Container
都是用来创建对象的
执行初始化方法
0 条评论
下一页