zoukankan      html  css  js  c++  java
  • Spring-IOC学习

    Spring Bean 的初始化过程.... 

    执行过程 FileSystemXmlApplicationContext ↓ org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:
    464) 刷新入口 ↓ org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:913) 实例化所有的(non-lazy-init)单例 ↓ org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:585) Instantiate all remaining (non-lazy-init) singletons,进行遍历 ↓ org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193) 调用获取动作doGetBean ↓ org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:291) 获取共享实例sharedInstance ↓ org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:225) 创建了一个内部的ObjectFactory,定义了一个内部getObject方法,然后 ↓ org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:294) 调用父类实现的createBean方法 ↓ org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456) 判断一些条件后调用执行方法doCreateBean ↓ org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:517) 大部分实例动作的包装类(包括485的createBeanInstance--构建实例、) ↓ org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1118) 填充数据(下面就是判断、遍历填充数据) ↓ org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1360) ↓ org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:153) ↓ org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveManagedList(BeanDefinitionValueResolver.java:353) ↓ org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:194) AbstractAutowireCapableBeanFactory的:createBeanInstance 方法最后面 // Need to determine the constructor... Constructor[] ctors = determineConstructorsFromBeanPostProcessors(beanClass, beanName); if (ctors != null || mbd.getResolvedAutowireMode() == RootBeanDefinition.AUTOWIRE_CONSTRUCTOR || mbd.hasConstructorArgumentValues() || !ObjectUtils.isEmpty(args)) { return autowireConstructor(beanName, mbd, ctors, args); } // No special handling: simply use no-arg constructor. return instantiateBean(beanName, mbd);
  • 相关阅读:
    好用的javascript eclipse插件Aptana
    汉字字符串转换成十六进制byte数组,一个汉字存到两个byte里面,大整数存到两个byte里面
    三星 平板手机电脑 Galaxytab2忘记开机密码解决方法
    java float 加减精度问题
    android 增加Addon属性支持的方法
    基于jquery的kendoUI 可以实现快速开发,节省大量web UI开发工作量
    zdz工具箱v1.5 android版本发布了,集成各种个人生活中常用的工具,方便日常使用管理
    存储联系人信息(进程com.motorola.contacts)意外停止 事件提醒eventreminder异常 处理方法
    playframework 同时运行多个项目的方法修改默认端口号
    免费的Git私有代码托管服务
  • 原文地址:https://www.cnblogs.com/javafengyi/p/3516551.html
Copyright © 2011-2022 走看看