一、配置文件概述
SpringBoot的配置文件主要用於配置應用程序的參數。在SpringBoot中,配置文件的默認位置是在src/main/resources中的application.properties或application.yml中。SpringBoot通過讀取配置文件中的參數來初始化應用程序中的一些核心配置。由於配置文件是應用程序的參數文件,所以我們可以將其用來設置應用程序中的各種配置信息,包括但不限於配置資料庫、設置日誌、定義bean等。
二、配置文件的語法
SpringBoot配置文件分為application.properties和application.yml兩種形式。兩種形式的配置文件的主要區別就是格式不同。application.properties文件是採用key=value的格式進行配置,而application.yml文件則是採用yml語法進行編寫的。將下面這段關於資料庫配置的代碼,分別使用.properties和.yml兩種方式進行編寫:
1、application.properties格式
spring.datasource.url=jdbc:mysql://localhost:3306/test spring.datasource.driver-class-name=com.mysql.jdbc.Driver spring.datasource.username=root spring.datasource.password=root
2、application.yml格式
spring: datasource: url: jdbc:mysql://localhost:3306/test driver-class-name: com.mysql.jdbc.Driver username: root password: root
可以看到,.properties文件採用「key=value」的形式進行配置,這樣的書寫方式相對來說比較易於理解,但是當屬性比較多時有些臃腫,讀起來也不太直觀;而.yml文件採用縮進的方式,更符合閱讀習慣,而且可以通過縮進來表示層級關係,更加清晰直觀。總而言之,兩種形式各有優劣,開發者可以根據個人習慣選擇使用。
三、如何使用配置文件
在SpringBoot中使用配置文件需要依賴於@ConfigurationProperties註解。該註解可以實現將配置文件中的屬性值映射到對應的bean上。在使用@ConfigurationProperties註解的時候需要指定prefix屬性來指定要映射的屬性的前綴。例如,我們有一個配置文件如下:
application.properties
myapp.name=SpringBoot myapp.version=1.0 myapp.description=A demo application
那麼我們可以通過定義一個JavaBean來映射配置文件中的屬性值:
@ConfigurationProperties(prefix = "myapp") public class MyAppProperties { private String name; private String version; private String description; // getter and setter }
這樣,SpringBoot在啟動時就會自動將配置文件中的對應屬性值注入到MyAppProperties對象中,而我們只需要將該對象注入到需要使用的類中,在需要的地方就可以使用其中的屬性值了:
@Service public class MyAppService { @Autowired private MyAppProperties myAppProperties; public void printInfo() { System.out.println("Name: " + myAppProperties.getName()); System.out.println("Version: " + myAppProperties.getVersion()); System.out.println("Description: " + myAppProperties.getDescription()); } }
四、常見配置屬性
1、配置資料庫
當我們需要配置資料庫時,可以在配置文件中添加一些相關的屬性來實現對資料庫的配置,例如:
application.properties
spring.datasource.url=jdbc:mysql://localhost:3306/test spring.datasource.driver-class-name=com.mysql.jdbc.Driver spring.datasource.username=root spring.datasource.password=root
application.yml
spring: datasource: url: jdbc:mysql://localhost:3306/test driver-class-name: com.mysql.jdbc.Driver username: root password: root
配置完畢之後,在代碼中就可以直接使用JdbcTemplate等資料庫操作工具對資料庫進行操作了。
2、配置日誌
在SpringBoot中,默認使用的日誌框架是Logback,我們可以通過添加一些配置屬性來對日誌進行配置。例如,我們可以將日誌的級別設置為debug:
application.properties
logging.level.root=debug
application.yml
logging: level: root: debug
除了設置日誌級別之外,我們還可以配置其他一些屬性,例如日誌輸出的格式、輸出位置等。
3、配置埠號
在SpringBoot中,默認的埠號是8080,我們可以通過設置server.port屬性來修改應用程序的埠號:
application.properties
server.port=8081
application.yml
server: port: 8081
修改完畢之後,我們只需要在瀏覽器中訪問http://localhost:8081就能夠訪問到我們的應用程序了。
五、使用Profile實現多環境配置
在實際項目開發中,我們通常會有多個環境,例如開發環境、測試環境、生產環境等,每個環境之間的配置可能會有所不同。在SpringBoot中,我們可以通過使用Profile來實現多環境配置。通過在配置文件中添加不同Profile的配置信息,我們可以在不同的環境下載入不同的配置信息。
1、定義Profile
在SpringBoot中,Profile是通過使用spring.profiles.active屬性來激活的。例如,我們可以通過在application.properties文件中設置該屬性來激活某個Profile:
spring.profiles.active=dev
注意,可以同時激活多個Profile,多個Profile的名稱之間要用逗號分隔。如果沒有設置spring.profiles.active屬性,則默認為「default」 Profile。
2、編寫配置文件
在編寫配置文件時,可以為每個Profile分別編寫一份配置文件。例如,我們可以為開發環境編寫一個application-dev.properties文件或者application-dev.yml文件,為測試環境編寫一個application-test.properties文件或者application-test.yml文件,以此類推。
3、使用Profile
在代碼中,我們只需要將不同Profile對應的配置文件注入到不同的bean中即可。例如:
@Configuration @Profile("dev") @PropertySource("classpath:/application-dev.properties") public class DevConfig { // configuration for dev } @Configuration @Profile("test") @PropertySource("classpath:/application-test.properties") public class TestConfig { // configuration for test }
在上面的代碼中,我們分別創建了用於開發環境和測試環境的兩個配置類,並分別注入了對應的配置文件。在運行應用程序時,只需要設置spring.profiles.active屬性即可啟用對應的Profile。
六、總結
本文對SpringBoot的配置文件進行了全面的解析,從配置文件的語法、使用方法到常見配置屬性,以及如何使用Profile實現多環境配置等各個方面進行了詳細介紹。通過對本文內容的學習,讀者可以更加深入地了解SpringBoot的配置文件,掌握一些常用的配置技巧,提升自己的開發水平。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/271120.html