[英]In Spring, how do I create a POJO with a default value from configuration?
我正在使用Spring框架來處理具有關鍵字的屬性文件:
empty.value = -
我希望能夠創建一個POJO,該POJO會將空值作為POJO的默認構造函數的默認值。 像這樣:
public class Dog {
private String name;
public Dog(){
}
public Dog(String name){
this.name = name;
}
}
所以,如果Dog d = new Dog()
被調用時, d.name
會-
從empty.value
關鍵。
自動裝配name
變量將為null
因為Spring不了解POJO,也不使用@Value("${empty.value}")
。
實現這一目標的最佳方法是什么?
編輯 :澄清一下,整個系統中有很多Dog
,我需要能夠根據要求初始化它們。
編輯2 :考慮以下用例-我有一個包含方法的接口:
Dog transform(List<String> animals);
我希望能夠知道,從transform方法返回的任何Dog
都具有-
(可配置)作為name
或者在創建時(或稍后使用setter)傳遞給構造函數的其他值。 我想確保無論在任何實現中進行任何transform
,即使transform
失敗,我都會擁有一個有效的Dog
,其name
如上所述。
如果使用Spring框架,則必須同時使用Spring創建所有Spring Bean。 例如:
Dog d = (Dog)context.getBean("dog");
做Dog d = new Dog()
是有效的實例,但是那樣Spring不會對其進行處理。
有關編輯2的更新
如果要確保在調用transform
方法時始終具有有效的dog實例,則可以在調用者代碼中使用try catch
塊。 例如:
// caller class
Dog dog = null;
try{
dog = yourInterface.transform(animals);
if (dog == null || !validName(dog.name)){
throw new RuntimeException("Not a valid dog/name");
}
}catch(Exception ex){
dog = (Dog)context.getBean("dog");
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.