2015-01-27 4 views
0

Я использую spring-config-server. У меня это работает, но в идеале я хотел бы создать список серверов в файле .yaml, который имеет свойства.динамически сгенерировать список bean-файлов из .yaml-файла в confg-сервере

@Resource 
private List<Server> servers; 

затем:

@Component 
public class Server { 

     @Value("${server.name}") 
     private String name; 
} 

в .yaml файле (ApplicationName):

servers: 
- 
    name: test 
- 
    name: test2 

См Я хочу List<Server> сгенерированный динамически из конфигурации. Тот факт, что эта конфигурация находится на сервере конфигурации, не должна отличаться от локального файла .yaml?

Спасибо за любую помощь

+0

Зачем вам нужны экземпляры «Server» для '@ Components'? Похоже, вы должны просто вставлять их с помощью «Конвертер» или «Правильный выбор». –

+0

Не знаю. Честно говоря, я довольно новый, чтобы весной. Если бы кто-нибудь мог указать мне на хороший пример? Кажется, я не могу найти его. – mtmattek

+0

Тот факт, что он исходит из конфигурационного сервера, не должен иметь никакого отношения к весеннему загрузку, анализируя конфигурацию, хотя вам нужно будет изменить yaml и java, чтобы получить то, что вы ищете. – spencergibb

ответ

3

мы поняли это ...

Trinity: 
    test: Goober 
    servers: 
    - 
     name: test 
     jmxURL: jmx://test 
    - 
     name: test2 
     jmxURL: jmx://test 

это конфиг (в конфигурации сервера) ... это код

@Component 
@EnableAutoConfiguration 
@EnableConfigurationProperties 
@ConfigurationProperties(prefix="Trinity") 
public class ConfigFetcher { 


    List<Server> servers; 

    public List<Server> getServers() { 
     return servers; 
    } 

    public void setTest(String test) { 
     this.test = test; 
    } 


    public void setServers(List<Server> servers) { 
     this.servers = servers; 
    } 


    @EnableConfigurationProperties 
    @ConfigurationProperties(prefix="Trinity.servers") 
    public static class Server{ 
     private String name; 
     private String jmxURL; 

     public String getName() { 
      return name; 
     } 

     public void setName(String name) { 
      this.name = name; 
     } 


     public String getJmxURL() { 
      return jmxURL; 
     } 

     public void setJmxURL(String jmxURL) { 
      this.jmxURL = jmxURL; 
     } 

     @Override 
     public String toString() { 
      return "Server [name=" + name + ", jmxUrl=" + jmxURL + "]"; 
     } 

    } 

} 

в основной класс (в моем случае в этом случае): с классом, имеющим следующую аннотацию

@EnableAutoConfiguration 


    @Autowired 
    private ConfigFetcher c; 

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

  • Нет связанных вопросов^_^