在Spring Boot中,配置可以通過application.properties或application.yml兩種文件進行管理。今天介紹這兩種格式的使用方式,以及如何進行配置管理,以滿足應用的需求
application.properties是Spring Boot應用的默認配置文件,採用鍵值對的形式來進行配置
server.port=8080
spring.datasource.url=jdbc:mysql://localhost:3306/mydb
spring.datasource.username=root
spring.datasource.password=secret
application.yml是另一種配置文件格式,使用YAML語法,比起application.properties更具可讀性,尤其是當設定項目較多時。例如,上述配置可以用YAML格式表示為:
server:
port: 8080
spring:
datasource:
url: jdbc:mysql://localhost:3306/mydb
username: root
password: secret
在配置文件中,你可以定義多種屬性,包括:
server.port=8081 # 改變預設端口
spring.datasource.url=jdbc:mysql://localhost:3306/mydb
spring.datasource.username=root
spring.datasource.password=secret
logging.level.root=INFO
app.name=My Spring Boot Application
app.version=1.0
Spring Boot支持不同配置的分環境管理,例如可以根據應用的運行環境來使用不同的配置文件:application-dev.properties、application-prod.properties等。可以使用 spring.profiles.active 属性來指定當前的配置檔:
spring.profiles.active=dev
然後在 application-dev.properties 中定義開發環境的特定設置,在 application-prod.properties 中定義生產環境的特定設置。
除了基本的屬性設定外,您還可以通過@ConfigurationProperties註解來綁定屬性到Java對象,這對於組織邏輯相關的設定項非常有用。
首先,創建一個Java類用於綁定屬性:
@Component
@ConfigurationProperties(prefix = "app")
public class AppConfig {
private String name;
private String version;
// Getters and Setters
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getVersion() {
return version;
}
public void setVersion(String version) {
this.version = version;
}
}
然後在 application.yml 中配置這些屬性:
app:
name: My Spring Boot Application
version: 1.0
在你的應用程序中,你可以自動注入這個配置類以使用配置的值:
@RestController
public class WelcomeController {
@Autowired
private AppConfig appConfig;
@GetMapping("/welcome")
public String welcome() {
return "Welcome to " + appConfig.getName() + " v" + appConfig.getVersion();
}
}
Spring Boot也支持在測試中使用application.properties或application.yml。你可以在測試類中使用@TestPropertySource指定其他屬性源。
例如可以創建一個測試文件application-test.properties:
app.name=Test Application
然後在測試中使用:
@SpringBootTest
@TestPropertySource(locations = "classpath:application-test.properties")
public class AppConfigTest {
@Autowired
private AppConfig appConfig;
@Test
public void testAppConfig() {
assertEquals("Test Application", appConfig.getName());
}
}
使用application.properties和application.yml進行Spring Boot配置管理是非常直觀和靈活的。通過適當的配置設置,開發者可以清晰地管理應用的屬性,從而使應用程序在不同環境下的工作更為簡便。無論是簡單的應用還是複雜的企業應用,正確的配置管理皆能提高開發效率和可維護性