[英]How can I use YAML properties with constructor injection in Spring Boot?
我知道這應該是小菜一碟,但是我什么都沒得到。
在我的Spring Boot應用程序的application.yml文件中,我有一個像這樣的條目:
some:
constructor:
property: value
而且我有一個彈簧服務(這是假的,但演示了問題):
package somepackage;
@Service
public class DummyService {
public DummyService(@Value("${some.constructor.property}") String path) {}
}
啟動失敗,但是:
org.springframework.beans.factory.BeanCreationException:創建文件[...(類文件)...]中定義的名稱為'dummyService'的bean時出錯:bean的實例化失敗; 嵌套的異常是org.springframework.beans.BeanInstantiationException:無法實例化[somepackage.DummyService]:沒有找到默認的構造函數;默認值為0。 嵌套的異常是java.lang.NoSuchMethodException:somepackage.DummyService。()
我如何說服Spring使用非空構造函數,並應從YAML文件獲取該構造函數參數? 注意:我不使用任何XML bean配置文件或任何東西,並且不希望使用。
只需將@Autowired批注放在構造函數上。
@Autowired
public DummyService(@Value("${some.constructor.property}") String path) {}
並且以防萬一有人試圖在Scala中做到這一點-這是我真正想做的,但是想要在Java中獲得答案,然后再嘗試使用Scala-這可行:
@Service
class DummyService @Autowired()(@Value("${some.constructor.property}") val path: String) {
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.