SpringBoot的起步依赖
SpringBoot的起步依赖是指在创建新的SpringBoot项目时,通过一个或多个起步依赖,可以快速集成一系列常用的第三方库。
Spring Boot比起Spring FrameWork更便捷就是因为依赖传递的存在。SpringBoot中我们不需要在一个一个的引入依赖,我们只需要引入一个主依赖,SpringBoot会自动将所需的依赖通过依赖传递引入,也就是说A依赖B,B依赖C,那么我们只需要引入A就可,B和C会通过依赖传递引入进来。
SpringBoot的自动配置原理
在SpringBoot项目中,当我们引入自己写好的第三方类时,如果第三方类不在当前项目的目录下,会造成引入失败。原因是SpringBoot在启动时,只会在当前项目所在的包来查找第三方类,所以我们要指定出第三方类的路径。
例如:导入下列第三方类
- 方案一:通过@ComponentScan(需要扫描的路径)来进行组件扫描。
- 方案二:通过@Import(类的字节码文件)注解导入。使用@Import导入的类会被Spring加载到IOC容器中。
导入的形式有:导入普通类,导入配置类,导入ImportSelector接口实现类,@EnableXxx注解所封装的@Import注解。
注:通过@Import来进行引入,不符合启动类的简洁,我们可以使用自定义@EnableXxxx注解来封装@Import注解(方案三) - 方案三:自定义注解EnableXxx,在注解中,通过@Import注解来引入所需配置的第三方类。
在启动类上加上我们自定义的注解就好
源码跟踪
@SpringBootApplication注解标识在SpringBoot的工程引导类上(启动类),是SpringBoot最重要的注解。该注解由三部分组成组成:
- @SpringBootConfiguration:该注解与@Configuration注解作用相同,用来声明当前也是一个配置类。
- @ComponentScan:进行组件扫描,默认的扫描范围为当前引导类所在包及其子包。
- @EnableAutoConfiguration:是SpringBoot实现自动化配置的核心注解。
在SpringBoot中,一般不是所有引入的依赖都会在SpringBoot启动时创建Bean对象进IOC容器里的,都会根据需求使用@Conditional注解来进行条件判断,满足条件后才会注册相对应的bean对象进入Spring IOC容器中。
@Conditional本身是一个父注解,起常用的子注解有:
- @ConditionalOnClass:判断环境中是否有对应的字节码文件,有才注册bean对象到IOC容器。
- @ConditionalOnMissingBean:判断环境中没有对应的bean(类型或名称),才注册bean对象到IOC容器。
- @ConditionalOnProperty:判断配置文件中有对应属性和值,有才注册bean对象到IOC容器中。