SpringBoot自动启动原理
SpringBoot的诞生对于我们程序员来说简直是大大提高了我们的开发效率,特别是针对于之前大量的xml配置,SpringBoot已经是做到了全自动装配,那么我么就从启动类来看看SpringBoot在底层都为我们做了写什么吧。
首先请看这段代码
@SpringBootApplication
public class SpringBootDemoApplication
{
public static void main(String[] args)
{
// System.setProperty("spring.devtools.restart.enabled", "false");
SpringApplication.run(SpringBootDemoApplication.class, args);
}
}
@SpringBootApplication这个注解是我们整个启动类的核心所在了,注明了这是一个SpringBoot项目的启动类。
更深入的点进去看里面有些什么!
这就厉害了,那么多注解在里面,看着就不想看下去的样子!没事,不必恐慌,所有复杂的东西我们一个一个看就都没那么复杂了!那么我们就先来看第一个
1.@Target :代表注解的作用目标,ElementType.TYPE
可以看到这代表可以在类、接口、枚举上面!
2.@Retention :保留政策:图中的RetentionPolicy.RUNTIME
代表在运行时保留
3.@Documented 这个就不做过多解释了,生成Java文档!
4.@Inherited 表示该父类注解会被子类继承|!
5.@SpringBootConfiguration 说明这是一个SpringBoot的配置类!
6.@EnableAutoConfiguration 这是核心!自动装配配置
7.@ComponentScan 扫描组件
虽然那么多注解,但是不难看出其中核心的也就是@EnableAutoConfiguration 这个!那么接下来深入吧!
从自动装配注解深入浅出
我们点击进入@EnableAutoConfiguration
注解,可以看到:WTF!!!又是一堆注解!不对!上面四个貌似可以忽略,好吧,瞅一眼
@Import(AutoConfigurationImportSelector.class)
这个貌似挺重要的,好吧这个又是核心,它传入了一个自动装配打入选择器的类!
那么我们来康康里面有些啥!
哟!
方法名见名知意,获取候选配置,通过扫描META-INF/spring.factories
这个文件里的东西来完成自动配置!断言表示返回配置如果为空就说明没找到对应的配置。
来看一下这个
META-INF/spring.factories
里面是啥可以看到都是一些依赖!所有相关的一些jar包都在这里以读取这个配置文件实现自动装配!
所以,接下来就是总结了!
总结
SpringBoot为我们提供了之前可以用到的所有的配置,以KV的形式获取,只要通过注解就能实现装配,是不是方便了许多!