Springboot创建容器和创建bean

  Springboot框架的最主要类就是SpringApplication,最重要的注解是@SpringBootApplication。简单归纳一下,SpringApplication.run()作用是创建springContext,而@SpringBootAppcation的作用就是自动创建bean,被spring管理,包括tomcat容器。

@SpringBootApplication
public class Msv1Application{
    public static void main(String[] args) {
        SpringApplication.run(Msv1Application.class,args);
    }
}

     那么为什么SpringBoot可以自动注入我们需要的对象呢?比如SqlSessionFactory,尤其是Tomcat容器呢?这是AutoEnableConfiguration注解的作用,看其源码,ImportSelector接口的selectImports返回的数组(类的全类名)都会被纳入到spring容器中.

public class AutoConfigurationImportSelector
		implements DeferredImportSelector, BeanClassLoaderAware, ResourceLoaderAware,
		BeanFactoryAware, EnvironmentAware, Ordered  //看这个类实现的接口多复杂
@Override
	public String[] selectImports(AnnotationMetadata annotationMetadata) {
		if (!isEnabled(annotationMetadata)) {
			return NO_IMPORTS;
		}
		AutoConfigurationMetadata autoConfigurationMetadata = AutoConfigurationMetadataLoader
				.loadMetadata(this.beanClassLoader);
		AutoConfigurationEntry autoConfigurationEntry = getAutoConfigurationEntry(
				autoConfigurationMetadata, annotationMetadata);
		return StringUtils.toStringArray(autoConfigurationEntry.getConfigurations());
	}

  这个方法就是导入了自动配置的文件的字符串,也就是spring.factory的作用,为我们导入了

 

参考博文:AutoEnableConfiguration的工作原理

     SpringBoot是如何启动tomcat的

posted @ 2019-01-10 14:23  懂得了才能做一些改变  阅读(600)  评论(0编辑  收藏  举报