美文网首页
Spring Bean实例化过程

Spring Bean实例化过程

作者: 异或 | 来源:发表于2022-06-28 00:13 被阅读0次

    入口

    public void refresh() throws BeansException, IllegalStateException {
        postProcessBeanFactory(beanFactory);
    
        // Invoke factory processors registered as beans in the context.
        invokeBeanFactoryPostProcessors(beanFactory);
    
        // Register bean processors that intercept bean creation.
        registerBeanPostProcessors(beanFactory);
    
        // Initialize message source for this context.
        initMessageSource();
    
        // Initialize event multicaster for this context.
        initApplicationEventMulticaster();
    
        // Initialize other special beans in specific context subclasses.
        onRefresh();
    
        // Check for listener beans and register them.
        registerListeners();
    
        // Instantiate all remaining (non-lazy-init) singletons.
        finishBeanFactoryInitialization(beanFactory); // 完成Bean实例化
        ...
    

    finishBeanFactoryInitialization,核心方法beanFactory.preInstantiateSingletons();

        protected void finishBeanFactoryInitialization(ConfigurableListableBeanFactory beanFactory) {
            ...
            // Initialize LoadTimeWeaverAware beans early to allow for registering their transformers early.
            String[] weaverAwareNames = beanFactory.getBeanNamesForType(LoadTimeWeaverAware.class, false, false);
            for (String weaverAwareName : weaverAwareNames) {
                getBean(weaverAwareName);
            }
            
            // Stop using the temporary ClassLoader for type matching.
            beanFactory.setTempClassLoader(null);
    
            // Allow for caching all bean definition metadata, not expecting further changes.
            beanFactory.freezeConfiguration();
    
            // Instantiate all remaining (non-lazy-init) singletons.
            beanFactory.preInstantiateSingletons();
        }
    

    beanFactory.preInstantiateSingletons()

    image.png

    相关文章

      网友评论

          本文标题:Spring Bean实例化过程

          本文链接:https://www.haomeiwen.com/subject/lskovrtx.html