因为springboot自动配置的特性,它会依照咱们搭建项目时给予的组件之间依赖性为咱们自动配置好了组件能正常启动相关的配置,咱们直接启动便可,由于设置的是默认值,当一些业务状况须要更改配置默认值时,springboot也提供了解决方案,那就是提供配置文件让咱们修改默认值,springboot会将配置文件中配置的属性值设置为组件相应的配置值。springboot文档也作了说明:spring
Spring Boot lets you externalize your configuration so that you can work with the same application code in different environments. You can use properties files, YAML files, environment variables, and command-line arguments to externalize configuration. json
这句话翻译为:springboot容许将配置外部化,可使用属性文件、yaml文件、环境变量和命令行参数等方式来外部化配置修改默认值。api
springboot提供两种文件格式的全局配置文件,而且文件名是固定的,均以“application”为文件名,这是springboot设计理念:约定优于配置,而两种文件格式分别是:springboot
这种文件格式的配置文件,在使用快速向导建立springboot应用的时候,默认就在resources目录下建立了,所以它是默认的全局配置文件,这种配置文件语法是“key=value”的形式;好比:mvc
debug=true spring.profiles.active=dev spring.application.name: xxx server.port=8080 spring.mvc.view.prefix=/templates/ spring.mvc.view.suffix=.ftl logging.file=qingyun-api logging.path=./logs/${spring.application.name} logging.config=classpath:logback.xml logging.level.xxx=DEBUG
在配置文件中也能够自定义属性。app
这种配置文件是以YAML(YAML Ain’t Markup Language)语言的文件,文件语法使用空白,缩进,分行组织数据,yml文件采起树状结构,更加简洁易读,以数据为中心,比json、xml等更适合作配置文件。好比:spa
//具体写法以下 person: lastName: 张三 age: 24 boss: false birth: 1994/5/1 # maps: {k1: v1,k2: v2} maps: k1: v1 k2: v2 # lists: [l1,l2,l3] lists: - l1 - l2 - l3 dog: name: 蛋黄 age: 2
properties文件语法是“key=value”的形式,对于复杂属性数据,是以“.”号链接层级关系的。结构上没有分层效果;而yml文件采用树状结构,结构上有明显的分层效果,语法是以"key:(空格)value"的形式,以空间的缩进来控制层级关系,只要是左对齐的一列数据,都是属性同一层级的。命令行
工程中同时存在application.properties文件和 application.yml文件,yml文件会先加载,然后加载的properties文件会覆盖yml文件。因此建议工程中,只使用其中一种类型的文件便可。翻译