2016-09-28 2 views
0

私には、春のクラウド設定を使用している春の起動アプリケーションがあります。 構成要素を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

を使用し、私の設定をマップしたいですJavaオブジェクトに、

@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;} 

} 
01例えば 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アノテーションを使用して設定を注入できます。

関連する問題