SpringBoot 通过 自动配置 简化了大量的繁复的配置信息。
启动类 Application 中有两处特别之处:
注解:@SpringBootApplication
run 方法:SpringApplication.run(…)
@SpringBootApplication 注解至少等价于以下三个注解:
@SpringBootConfiguration
该是来声明当前类是 SpringBoot 应用的配置类, 一个项目中只能有一个 。
因为该注解的存在,Spring 会再去「找」所有添加了 @Configuration 的类,做相应的操作。
@EnableAutoConfiguration
该注解的作用是告诉 Spring Boot 基于 .pom 文件中添加的的 starter 依赖,进行自动配置。
例如,我们引入了 spring-boot-starter-web,而这个启动器中帮我们添加了 tomcat、Spring MVC 的依赖。
SpringBoot 内部对大量的第三方库或 Spring 内部库进行了默认配置,这些配置是否生效,取决于我们是否引入了对应 starter 。
@ComponentScan
该注解提供了类似与
标签的作用。
通过 basePackageClasses 或者 basePackages 属性来指定要扫描的包。如果没有指定这些属性,那么将从声明这个注解的类所在的包开始,扫描包及子包。
因此,启动类需要放在一个比较前/浅的包目录中 。
spring-boot-autoconfigure.jar 中的 org.springframework.boot.autoconfigure 包下包含了各种框架/库的默认配置。
由 Spring 负责提供的 用于快速整合 XXX 框架/组件的自动配置快速整合包,通常的命名规则是:spring-boot-starter-xxx 。例如:
spring-boot-starter-tomcat
spring-boot-starter-thymleaf
这种由 Spring 提供的自动配置快速整合的包,其版本信息在 spring-boot-parent 中已定义,(除非是真有需要,否则)不需要指定版本信息。
由 XXX 框架/组件方负责提供的用于与 Spring 快速整合的包, 通常的命名规则是: xxx-spring-boot-starter
。例如:
mybatis-spring-boot-starter
druid-spring-boot-starter
这种由 XXX 方提供的自动配置快速整合包,需要指定版本信息。