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

Использование ниже кода для настройки свойств конфигурации in 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;} 

} 

Проверьте следующее, например http://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html

INJECT этого класса в другом классе:

@Autowired 
private ClientInfo clientInfo; 

выше авто проводка не будет работать, если экземпляры класса создаются с помощью «нового оператора».

+0

Спасибо! попробуем его –

+0

Как мне вставить эту конфигурацию? использование @Autowired не сработало. –

+0

Его не работают как клиенты - это список –

0

На самом деле я нашел причину, по которой он не работал. Все, что было необходимо, это иметь еще один класс, который содержит список ClientInfo и содержит @EnableConfigurationProperties и @ConfigurationProperties. Это потому, что «клиенты» в моей конфигурации - это список. После этого изменения мы можем использовать @Autowired аннотацию, чтобы ввести конфигурацию.

Смежные вопросы