@SpringBootApplication注解:

@SpringBootApplication注解

@SpringBootApplication注解有下面的三个核心注解组成:

@SpringBootApplication注解

  • @SpringBootConfiguration
  • @EnableAutoConfiguration
  • @ComponentScan

[email protected]

@SpringBootApplication注解

可以看到@SpringBootConfiguration其实也是个@Configuration

  • @Configuration是什么

@Configuration的作用:
就是将一个类做成JavaConfig类,能够将其中的bean设置到Spring的IOC容器中

  • @Configuration的用法
@Configuration
public class ConfigDemo{
	
	@Bean
	public DemoBean demoBean(){
		return new DeamBean();
	}
}

其中@Bean 的作用就是将方法返回的值作为实例注入到IOC容器中,并且在当前的程序上下文中起作用,并且该实例的ID默认为方法名;

@SpringbootConfiguartion的作用还有另外一个就是将当前的启动类做为一个扩展类,当有额外的配置要配置时,直接@import即可

@SpringBootApplication注解

2. @ComponentScan

@SpringBootApplication注解

简单的来说就是扫描其他的组件,比如@Component,@Service 等组件,并且将其加载到IOC容器中

3. @EnableAutoConfiguration

SpringBoot中最为重要的组件

@SpringBootApplication注解

其中最为关键的就是:

AutoConfigurationImportSelector.class

在其源代码的316行

我们可以看到:
@SpringBootApplication注解

这里引用了Spring自带的工具:SpringFactoriesLoader

@SpringBootApplication注解
我们在这里可以看到,其实这个工具是去读取当前包下面的"META-INF/spring.factories"的这个文件,可以看到这个文件中全是配置类的 全限定名

@SpringBootApplication注解

那么拿到了全限定名之后,就可以通过反射机制获取对应的实例并且注入到IOC容器中

简单总结:

@SpringBootApplication的作用就是:

首先通过@Configuration将该启动类做成一个配置类

然后通过@EnableAutoConfiguration去扫描SpringBoot中符
合条件的配置类,并且将其自动注入到IoC容器中

最后就是通过@Component去扫描其他的组件,并且将其扫描到IoC容器中

至此为止,所有的组件都组成完毕,当然就可以启动了

相关文章: