0
点赞
收藏
分享

微信扫一扫

Spring IOC的初始化原理

上一篇 <<<Mybatis常见面试题
下一篇 >>>SpringBean的生命周期流程图


SpringIOC容器线程是否安全

SpringIOC初始化原理图

1、资源定位

2、ResourceLoader加载

3、 BeanDefinition的载人和解析

protected void loadBeanDefinitions(XmlBeanDefinitionReader reader) throws BeansException, IOException {
        Resource[] configResources = getConfigResources();
        if (configResources != null) {
            reader.loadBeanDefinitions(configResources);
        }
        String[] configLocations = getConfigLocations();
        if (configLocations != null) {
            reader.loadBeanDefinitions(configLocations);
        }
    }

protected int doLoadBeanDefinitions(InputSource inputSource, Resource resource)
            throws BeanDefinitionStoreException {
        try {
            Document doc = doLoadDocument(inputSource, resource);
            return registerBeanDefinitions(doc, resource);
        }
    }

4、BeanDefinition注册

public int registerBeanDefinitions(Document doc, Resource resource) throws BeanDefinitionStoreException {
        // 创建BeanDefinitionDocumentReader 来对 xml格式的BeanDefinition解析
        BeanDefinitionDocumentReader documentReader = createBeanDefinitionDocumentReader();
        // 获得容器中注册的bean数量
        int countBefore = getRegistry().getBeanDefinitionCount();
        // 解析过程入口,这里使用了委派模式,BeanDefinitionDocumentReader只是个接口
        // 具体的解析实现过程由实现类DefaultBeanDefinitionDocumentReader完成
        documentReader.registerBeanDefinitions(doc, createReaderContext(resource));
        return getRegistry().getBeanDefinitionCount() - countBefore;
    }

4、容器的增强


推荐阅读:
<<<SpringBean的生命周期流程图
<<<SpringBean单例情况下解决循环依赖的原理
<<<Spring AOP的底层原理
<<<Spring AOP通知责任链模式图解
<<<Spring AOP核心源码解读
<<<Spring事务常识汇总
<<<Spring声明事务原理及核心源码分析
<<<手动事务和自定义注解事务代码参考
<<<Spring常用注解汇总

举报

相关推荐

0 条评论