2016-09-28 141 views
0

我有一個使用Spring雲配置的彈簧啓動應用程序。 如何映射一個配置元素與一些Java對象。如何將配置對象映射到java對象

我的配置是這樣的:

clients: 
- id   : 1 
    name: client 1 
    groups : [a,b] 

- id   : 2 
    name: client 2 
    groups : [a] 

我的Java對象:

public class ClientInfo { 
    private String clientId; 
    private List<String> profiles; 

    public ClientInfo(String clientId, List<String> pips) { 
    this.clientId = clientId; 
    this.profiles = pips; 
    } 
    public String getClientId() { 
    return clientId; 
    } 

    public void setClientId(String clientId) { 
    this.clientId = clientId; 
    } 

    public List<String> getProfiles() { 
    return profiles; 
    } 

    public void setProfiles(List<String> profiles) { 
    this.profiles = profiles; 
    } 
} 

我想用列表地圖我的配置如下代碼

回答

1

用於配置配置屬性in to java Object,

@Component 
@EnableConfigurationProperties 
@ConfigurationProperties(prefix = "clients") 
public class ClientInfo { 

private String id; 
private String name; 
private List<String> groups; 

public String getId(){ return id;} 

public String getName(){ return name;} 

public List<String> getGroups(){ return groups;} 

} 

檢查另一類以下例如http://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html

進樣這個類:

@Autowired 
private ClientInfo clientInfo; 

如果類是使用「new運算符」實例化上述自動佈線將無法正常工作。

+0

謝謝!將嘗試 –

+0

我應該如何注入此配置?使用@Autowired沒有工作。 –

+0

它不工作,因爲客戶是一個列表 –

0

其實我發現它不工作的原因。 所有需要的是讓另一個類包含一個ClientInfo列表,並在其上有@EnableConfigurationProperties和@ConfigurationProperties註釋。這是因爲我的配置中的「客戶端」是一個列表。在更改之後,我們可以使用@Autowired註釋來注入配置。