因爲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文件。因此建議工程中,只使用其中一種類型的文件便可。翻譯