SpringBoot启动原理
现在微服务越来越火了,SpringBoot热度蹭蹭直升,这里介绍一下主程序入口@SpringBootApplication这个注解的结构
SpringBootApplication背后的秘密
@Target({ElementType.TYPE}) @Retention(RetentionPolicy.RUNTIME) @Documented @Inherited @SpringBootConfiguration @EnableAutoConfiguration @ComponentScan( excludeFilters = {@Filter( type = FilterType.CUSTOM, classes = {TypeExcludeFilter.class} ), @Filter( type = FilterType.CUSTOM, classes = {AutoConfigurationExcludeFilter.class} )}
虽然定义使用了多个Annotation进行了原信息标注,但实际上重要的只有三个Annotation:
·@Configuration(@SpringBootConfiguration点开查看发现里面还是应用了@Configuration)
·@EnableAutoConfiguration
·@ComponentScan
所以,如果我们使用如下的SpringBoot启动类,整个SpringBoot应用依然可以与之前的启动类功能对等:
@Configuration @EnableAutoConfiguration @ComponentScan public class RestDemoApplication { public static void main(String[] args) { SpringApplication.run(RestDemoApplication.class, args); } }
但每次都写三个Annotation显然过于频繁,所以写一个@SpringBoot-Application这样的一站式复合Annotation显然更方便些。
有对@Configuration、@EnableAutoConfiguration、@ComponentScan感兴趣的小伙伴可以帮小编点个赞,加个关注不迷路
持续更新
浙公网安备 33010602011771号