前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Spring IOC Notes-Obj Creation Process

Spring IOC Notes-Obj Creation Process

作者头像
itliusir
发布2018-10-08 11:00:46
7270
发布2018-10-08 11:00:46
举报
文章被收录于专栏:刘君君刘君君

摘要: Spring IOC 学习笔记-对象创建过程

正文:

对象创建过程

Resource (xml annotation class properties/yml) -> BeanDefinition -> BeanWrapper -> Object

Resource –> BeanDefinition

For Xml
代码语言:javascript
复制
<bean id="user" class="com.itliusir.spring.entity.User" >
    <property name="id" value="1" />
    <property name="name" value="杰克" />
    <property name="classes" ref="aClass" />
</bean>

<bean id="aClass" class="com.itliusir.spring.entity.Class">
    <property name="id" value="1" />
    <property name="className" value="终极一班" />
</bean>
代码语言:javascript
复制
@Test
public void testBean() {
    ClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext
        ("classpath:bean.xml");
    User user = applicationContext.getBean(User.class);
    log.info(user.getName());
    log.info(user.getClasses().getClassName());
    Assert.assertEquals("杰克", user.getName());
    Assert.assertEquals("终极一班", user.getClasses().getClassName());
}
代码语言:javascript
复制
1. org.springframework.context.support.ClassPathXmlApplicationContext#
ClassPathXmlApplicationContext(java.lang.String)
2. org.springframework.context.support.AbstractApplicationContext#
refresh
3. org.springframework.context.support.AbstractApplicationContext#
obtainFreshBeanFactory
4. org.springframework.context.support.AbstractRefreshableApplicationContext#
refreshBeanFactory
5. org.springframework.context.support.AbstractXmlApplicationContext#
loadBeanDefinitions(org.springframework.beans.factory.support.DefaultListableBeanFactory)
6. org.springframework.context.support.AbstractXmlApplicationContext#
loadBeanDefinitions(org.springframework.beans.factory.xml.XmlBeanDefinitionReader)
7. org.springframework.beans.factory.support.AbstractBeanDefinitionReader#
loadBeanDefinitions(org.springframework.core.io.Resource...)
8. org.springframework.beans.factory.xml.XmlBeanDefinitionReader#
loadBeanDefinitions(org.springframework.core.io.Resource)
9. org.springframework.beans.factory.xml.XmlBeanDefinitionReader#
loadBeanDefinitions(org.springframework.core.io.support.EncodedResource)
10. org.springframework.beans.factory.xml.XmlBeanDefinitionReader#
doLoadBeanDefinitions
11. org.springframework.beans.factory.xml.XmlBeanDefinitionReader#
registerBeanDefinitions
12. org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader#
registerBeanDefinitions
13. org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader#
doRegisterBeanDefinitions
14. org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader#
parseBeanDefinitions
15. org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader#
parseDefaultElement
16. org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader#
processBeanDefinition
17. org.springframework.beans.factory.support.BeanDefinitionReaderUtils#
registerBeanDefinition
18. org.springframework.beans.factory.support.DefaultListableBeanFactory#
registerBeanDefinition
For Annotation
代码语言:javascript
复制
@Data
@Component
public class SimpleBean {
    private String id = "sss";
    private String name = "simpleBeans";
}
代码语言:javascript
复制
@Test
public void testBean() {
    AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext("com.itliusir.spring.beans.annotation");
    SimpleBean simpleBean = applicationContext.getBean(SimpleBean.class);
    log.info(simpleBean.getId());
    log.info(simpleBean.getName());
    Assert.assertEquals("sss", simpleBean.getId());
    Assert.assertEquals("simpleBeans", simpleBean.getName());
}
代码语言:javascript
复制
1. org.springframework.context.annotation.AnnotationConfigApplicationContext#
AnnotationConfigApplicationContext(java.lang.String...)
2. org.springframework.context.annotation.AnnotationConfigApplicationContext#
scan
3. org.springframework.context.annotation.ClassPathBeanDefinitionScanner#
scan
4. org.springframework.context.annotation.ClassPathBeanDefinitionScanner#
doScan
5. org.springframework.context.annotation.ClassPathBeanDefinitionScanner#
registerBeanDefinition
6. org.springframework.beans.factory.support.BeanDefinitionReaderUtils#
registerBeanDefinition

BeanDefinition –> Object

代码语言:javascript
复制
1. org.springframework.beans.factory.BeanFactory#
getBean(java.lang.String)
2. org.springframework.beans.factory.support.AbstractBeanFactory#
doGetBean
3. org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory#
createBean(java.lang.String, org.springframework.beans.factory.support.RootBeanDefinition, java.lang.Object[])
4. org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory#
createBean(java.lang.String, org.springframework.beans.factory.support.RootBeanDefinition, java.lang.Object[])
5. org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory#
doCreateBean
CreateBeanInstance
代码语言:javascript
复制
1. org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory#
createBeanInstance
2. org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory#
instantiateBean
PopulateBean
代码语言:javascript
复制
1. org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory#
populateBean
InitializeBean
代码语言:javascript
复制
1. org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory#
initializeBean(java.lang.String, java.lang.Object, org.springframework.beans.factory.support.RootBeanDefinition)
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-09-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 正文:
  • 对象创建过程
    • Resource –> BeanDefinition
      • For Xml
      • For Annotation
    • BeanDefinition –> Object
      • CreateBeanInstance
      • PopulateBean
      • InitializeBean
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档