SpringBoot通过众多起步依赖降低项目依赖的复杂度。
起步依赖本质上是一个Maven项目对象模型。(Project Object Model,POM),定义了对其他库的传递依赖,这些东西加在一起即支持某项功能。
很多起步依赖的命名都暗示了他们提供的某种或某类功能。
SpringBoot中实现自定义配置的关键在于@ConditionOnXxx一系列注解,比如 @ConditionOnMissingBean(xxx),如果用户没有自定义,则会有默认的实现,否则使用用户自己实现的。
当然,通过属性文件(properties)外置配置就更方便了。
SpringBoot项目可以自定义配置覆盖默认的,也可以将配置写在配置文件中,xml、properties、yml文件等。
而使用配置文件时,既可以写在文件里,也可以启动时写在命令里。
显然,命令里的优先于配置文件中的。
如:
java -jar aaa.jar --spring.main.show-banner=false
In fact,
SpringBoot能依次从多种属性源获得配置:
- 命令行参数
- Java:com/env 里的JNDI属性 (啥是JNDI?)
- JVM系统属性
- 操作系统环境变量
- 随机生成的带random.* 前缀的属性
- 应用程序依赖的application.properties或yml文件
- 打包在应用程序内的application.properties 或 yml文件
- 通过 @PropertySource 标注的属性源
- 默认属性
其中,application.properties 或 yml的覆盖顺序:
- 外置,在相对于应用程序运行目录的/config子目录里
- 外置,在应用程序运行的目录里
- 内置,在config包内
- 内置,在Classpath 根目录
如果同一层, yml 会覆盖 properties 文件里的属性。