SpringBoot启动流程和自动配置实现原理

@SpringBootApplication+run()方法--加载一个应用所需要的所有资源和配置,最后启动一个应用实例;

run()方法--

public ConfigurableApplicationContext run(String... args)

run()方法主要创建一个应用上下文实例(应用上下文其实就是一个SpringBean工厂),这里具体的是创建了一个ConfigurableApplicationContext实例;

而Spring工厂的创建需要注册相应的beandefiniton,所以需要加载关于bean的定义相关配置;

这里通过load方法实现这一操作--
 

protected void load(ApplicationContext context, Object[] sources) {
		if (logger.isDebugEnabled()) {
			logger.debug("Loading source " + StringUtils.arrayToCommaDelimitedString(sources));
		}
		BeanDefinitionLoader loader = createBeanDefinitionLoader(getBeanDefinitionRegistry(context), sources);
		if (this.beanNameGenerator != null) {
			loader.setBeanNameGenerator(this.beanNameGenerator);
		}
		if (this.resourceLoader != null) {
			loader.setResourceLoader(this.resourceLoader);
		}
		if (this.environment != null) {
			loader.setEnvironment(this.environment);
		}
		loader.load();
	}

load()方法在preparecontext()方法中调用--

然后调用了applicationcontext的refresh() 方法,用来重启Spring工厂;

--加载bean定义就是创建beandefinition实例;---不是bean;

自动配置原理--约定大于配置

其中@EnableAutoConfiguration启动自动配置并导入相关的配置类;

@ComponentScan用来扫描和加载自定义配置

@EnableAutoConfiguration最终会导入一个自动配置类的列表;

未完待续___

(加载自动配置的具体实现代码流程以及如何何时使用这些自动配置来启动应用上下文,)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值