spring 启动和spring boot 启动

spring 启动和spring boot 启动

@Override
public void refresh() throws BeansException, IllegalStateException {
    synchronized (this.startupShutdownMonitor) {
    // 准备,记录容器的启动时间startupDate, 标记容器为激活,初始化上下文环境如文件路径信息,验证必填属性是否填写 
    prepareRefresh();
 
 
    // 这步比较重要(解析),告诉子类去刷新bean工厂,这步完成后配置文件就解析成一个个bean定义,注册到BeanFactory(但是未被初始化,仅将信息写到了beanDefination的map中)
    ConfigurableListableBeanFactory beanFactory = obtainFreshBeanFactory();
 
 
    // 设置beanFactory类加载器,添加多个beanPostProcesser
    prepareBeanFactory(beanFactory);
 
 
    try {
        // 允许子类上下文中对beanFactory做后期处理
        postProcessBeanFactory(beanFactory);
 
 
        // 调用BeanFactoryPostProcessor各个实现类的方法
        invokeBeanFactoryPostProcessors(beanFactory);
 
 
        // 注册 BeanPostProcessor 的实现类,注意看和 BeanFactoryPostProcessor 的区别
         // 此接口两个方法: postProcessBeforeInitialization 和 postProcessAfterInitialization
         // 两个方法分别在 Bean 初始化之前和初始化之后得到执行。注意,到这里 Bean 还没初始化
        registerBeanPostProcessors(beanFactory);
 
 
        //初始化ApplicationContext的MessageSource
        initMessageSource();
 
 
        //初始化ApplicationContext事件广播器
        initApplicationEventMulticaster();
 
 
        // 初始化子类特殊bean(钩子方法)
        onRefresh();
 
 
        // 注册事件监听器
        registerListeners();
 
 
        // 初始化所有singleton bean  重点!!重点!!
        finishBeanFactoryInitialization(beanFactory);
 
 
        // 广播事件,ApplicationContext初始化完成
        finishRefresh();
        
        
  } catch (BeansException ex) {
		if (logger.isWarnEnabled()) {
			logger.warn("Exception encountered during context initialization - " +
					"cancelling refresh attempt: " + ex);
		}

		// Destroy already created singletons to avoid dangling resources.
		destroyBeans();

		// Reset 'active' flag.
		cancelRefresh(ex);

		// Propagate exception to caller.
		throw ex;
	}

	finally {
		// Reset common introspection caches in Spring's core, since we
		// might not ever need metadata for singleton beans anymore...
		resetCommonCaches();
	}
}
}

在这里插入图片描述
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory
initializeBean(…)
执行Aware set(…)
执行processor.postProcessBeforeInitialization(…)
执行invokeInitMethods()
执行processor.postProcessAfterInitialization(…)

在这里插入图片描述
问题
1 如何扫描注解 config bean
org.springframework.beans.factory.ListableBeanFactory
getBeansWithAnnotation(…)

2 spring 启动和spring boot启动的区别

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值