Spring Boot是一個非常方便的框架,可以快速地構建應用程序,同時,它也提供了很多配置文件以供我們使用。在本文中,我們將會詳解如何使用Spring Boot的配置文件。
一、常規配置文件
Spring Boot中的常規配置文件只需要在src/main/resources目錄下創建以application為前綴的配置文件即可,如下:
application.properties application.yml
其中application.properties是以鍵值對的形式組織的,如:
spring.datasource.driver-class-name=com.mysql.jdbc.Driver spring.datasource.url=jdbc:mysql://localhost/test spring.datasource.username=root spring.datasource.password=root
而application.yml則是以縮進的方式組織的,如:
spring:
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost/test
username: root
password: root
在這樣的配置文件中,我們可以對各種配置項進行配置。其中spring代表要配置的模塊,後面跟著的datasource代表數據源模塊,而driver-class-name、url、username、password則是datasource模塊下的具體配置項。
二、多環境配置
有時我們需要根據不同的環境來配置不同的配置項,比如開發環境、測試環境和生產環境等。這時就需要使用Spring Boot的多環境配置功能了。
在Spring Boot中,我們可以創建以application-{profile}.properties或application-{profile}.yml的文件來配置不同的環境。其中,{profile}代表不同的環境,如:
application-dev.properties # 開發環境 application-test.properties # 測試環境 application-prod.properties # 生產環境 application-dev.yml application-test.yml application-prod.yml
在application-test.yml中,可以這樣配置數據源:
spring:
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost/test
username: root
password: root
logging:
level:
root: debug
org:
springframework: debug
這樣,在測試環境中,我們可以將日誌級別設置成debug,以便更好地進行調試工作。
三、配置優先順序
Spring Boot使用一種特定的順序來載入配置文件,以應對多個配置來源的情況。具體優先順序如下:
1.命令行參數
2.來自java:comp/env的JNDI屬性
3.Java System屬性(SpringApplication.setDefaultProperties)指定的系統屬性
4.操作系統環境變數
5./WEB-INF/classes/application.properties或application.yml(應用程序根路徑下)
6.來自@PropertySource註解的屬性Source
7.默認屬性(org.springframework.boot.autoconfigure.core.DefaultProperties)
即,命令行參數的優先順序最高,而默認屬性的優先順序最低。
四、使用@ConfigurationProperties
Spring Boot中的@ConfigurationProperties註解可以將配置文件中的屬性映射到Java類中的屬性上。需要注意的是,這個類必須被@Bean註解,才能保證Spring Boot將會把這個類的屬性注入到Bean中。
以讀取數據源配置為例,我們可以這樣創建一個DataSourceConfig類:
@Configuration
@ConfigurationProperties(prefix = "spring.datasource")
public class DataSourceConfig {
private String driverClassName;
private String url;
private String username;
private String password;
// getters and setters
}
然後我們就可以在其他需要用到數據源的地方將DataSourceConfig注入進去,如:
@RestController
public class UserController {
@Autowired
private DataSourceConfig dataSourceConfig;
@GetMapping("/user")
public String getUser() {
// 使用dataSourceConfig獲取數據源相關信息
return "user info";
}
}
五、使用@Value註解
除了@ConfigurationProperties註解外,我們還可以使用@Value註解來獲取配置文件中的屬性值。需要注意的是,使用@Value註解只能讀取單個屬性值。
以讀取日誌級別配置為例,我們可以這樣創建一個LoggingConfig類:
@Component
public class LoggingConfig {
@Value("${logging.level.root}")
private String rootLogLevel;
@Value("${logging.level.org.springframework}")
private String springLogLevel;
// getters and setters
}
然後我們就可以在其他需要用到日誌級別的地方將LoggingConfig注入進去,如:
@RestController
public class UserController {
@Autowired
private LoggingConfig loggingConfig;
@GetMapping("/user")
public String getUser() {
// 使用loggingConfig獲取日誌級別相關信息
return "user info";
}
}
六、使用PropertySources
有時,我們可能需要使用多個配置文件,或者使用其他文件來配置應用程序。這時,我們可以使用Spring Boot的PropertySources來讀取這些屬性。
以讀取外部配置文件為例,我們可以這樣創建一個ExternalConfig類:
@Configuration
@PropertySources({
@PropertySource("file:/path/to/config.properties"),
@PropertySource(value = "classpath:default.properties", ignoreResourceNotFound = true)
})
public class ExternalConfig {
@Value("${external.property}")
private String externalProperty;
// getters and setters
}
在這個配置文件中,我們用@PropertySources註解指定了讀取外部配置文件的路徑,同時還可以指定一個默認的配置文件,當外部配置文件不存在時,將會使用默認的配置文件。
七、結語
Spring Boot的配置文件功能非常強大,可以很好地滿足我們的各種需求。本文介紹了Spring Boot的常規配置文件、多環境配置、配置優先順序、使用@ConfigurationProperties註解、使用@Value註解和使用PropertySources,希望對大家有所幫助。
原創文章,作者:VYWGL,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/368490.html
微信掃一掃
支付寶掃一掃