2016-09-28 1 views
0

J'ai une application de démarrage de ressort qui utilise une configuration de nuage de printemps. Comment mapper un élément de configuration avec un objet Java.Comment mapper des objets de configuration à un objet java

Ma config est quelque chose comme ceci:

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

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

Et mon objet java est:

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

Je veux carte ma configuration avec liste

Répondre

1

utilisation ci-dessous le code pour configurer les propriétés de configuration en Java Objet,

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

} 

Vérifiez les points suivants par exemple http://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html

Injecter cette classe dans une autre classe:

@Autowired 
private ClientInfo clientInfo; 

Le câblage automatique ci-dessus ne fonctionnera pas si la classe est instancié à l'aide « nouvel opérateur ».

+0

Merci! va l'essayer –

+0

Comment dois-je injecter cette configuration? L'utilisation de @Autowired n'a pas fonctionné. –

+0

Son ne fonctionne pas comme clients est une liste –

0

En fait, j'ai trouvé la raison pour laquelle cela ne fonctionnait pas. Tout ce qui était nécessaire est d'avoir une autre classe qui contient une liste de ClientInfo et avoir des annotations @EnableConfigurationProperties et @ConfigurationProperties dessus. C'est parce que "clients" dans ma configuration est une liste. Après cette modification, nous pouvons utiliser l'annotation @Autowired pour injecter la configuration.