簡體   English   中英

在Spring中,如何從配置中創建具有默認值的POJO?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM