2016-09-28 105 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注释来注入配置。