我有一個 Spring Boot 應用程式,它使用 Spring 組態檔來創建特定于環境的配置,例如:
@Configuration
@Profile("local")
public class LocalConfiguration
...
@Configuration
@Profile("prod")
public class ProdConfiguration
...
我有一個 @RestContoller 需要訪問配置從中加載的值application.properties。如何在控制器中注入當前環境特定的配置 bean?
例子:
@Autowired
private <config_based_on_env_here> config;
@RestController
public String getSomeString() {
return config.getSomeString();
}
uj5u.com熱心網友回復:
Spring 將基于配置的屬性保存在 Environment 類的實體中。如果您將屬性保存在名為 application-local.properties 和 application-prod.properties 的檔案中,則無需像所示那樣顯式宣告 bean。Spring 將根據活動的組態檔選擇正確的屬性檔案。注入環境如下:
@Autowired
private Environment config;
uj5u.com熱心網友回復:
您可以使用 @Value 注釋并訪問屬性和 @Configuration 以指定您正在使用的 Spring bean 中的哪個檔案
在類的頂部添加@Configuration
@Configuration("employeeProperties")
class YourClass{}
在使用時,您可以添加類似這樣的內容
@Value("${userBucket.path}")
private String userBucketPath;
我希望,它有幫助
uj5u.com熱心網友回復:
如果您需要訪問application.propertiesor.yaml配置中的值,您可以使用更簡單的方法來實作此目的。
首先配置不同的配置:
application-local.properties
my.value=local-value
application-prod.properties
my.value=prod-value
創建用于讀取所需值的配置:
@Configuration
@ConfigurationProperties(prefix = "my")
public class ConfigProperties {
private String value;
// standard getters and setters
}
最后,您可以在控制器上自動裝配此配置:
@RestController
class MyController {
@Autowire
private ConfigProperties config;
@GetMapping("/hello")
public void hello() {
System.out.println("Config value: " config.getValue());
}
}
當您使用所需的組態檔運行您的應用程式時 - 將在控制器上加載和訪問適當的組態檔。
另外,你可以看看@Value注釋
其他資源:
- 外化配置
- Spring中的配置屬性
- Spring @Value 快速指南
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/514379.html
標籤:爪哇春天弹簧靴
