@SpringBootApplication注解:
@SpringBootApplication注解有下面的三个核心注解组成:
- @SpringBootConfiguration
- @EnableAutoConfiguration
- @ComponentScan
1.@SpringBootConfiguration
可以看到@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即可
2. @ComponentScan
简单的来说就是扫描其他的组件,比如@Component,@Service 等组件,并且将其加载到IOC容器中
3. @EnableAutoConfiguration
SpringBoot中最为重要的组件
其中最为关键的就是:
AutoConfigurationImportSelector.class
在其源代码的316行
我们可以看到:
这里引用了Spring自带的工具:SpringFactoriesLoader
我们在这里可以看到,其实这个工具是去读取当前包下面的"META-INF/spring.factories"的这个文件,可以看到这个文件中全是配置类的 全限定名
那么拿到了全限定名之后,就可以通过反射机制获取对应的实例并且注入到IOC容器中
简单总结:
@SpringBootApplication的作用就是:
首先通过@Configuration将该启动类做成一个配置类
然后通过@EnableAutoConfiguration去扫描SpringBoot中符
合条件的配置类,并且将其自动注入到IoC容器中
最后就是通过@Component去扫描其他的组件,并且将其扫描到IoC容器中
至此为止,所有的组件都组成完毕,当然就可以启动了