leggere un elenco di proprietà dinamiche in un bean gestito a molla

Ho cercato ma non riesco a trovare questi passaggi. Spero mi manchi qualcosa di ovvio.

Ho un file delle proprietà con i seguenti contenuti:

machines=A,B 

Ho un altro file simile ma con un numero diverso di membri nell’elemento macchina come questo:

 machines=B,C,D 

La mia domanda è come caricare questa variabile di macchine a lunghezza variabile in un bean nella mia configurazione di spring in modo generico?

qualcosa come questo:

  

dove macchine è un array o un elenco nel mio codice java. Posso definirlo comunque voglio se riesco a capire come farlo.

Fondamentalmente preferirei fare il parsing e attaccare ogni valore in un elemento di lista invece di dover scrivere qualcosa che legge nella stringa di macchine complete e fare il parsing me stesso (con il delimitatore di virgola) per mettere ogni valore in un array o lista. C’è un modo semplice per fare questo che mi manca?

Potresti dare un’occhiata alla class StringUtils di Spring. Ha un numero di metodi utili per convertire un elenco separato da virgola in un set o un array di stringhe. È ansible utilizzare uno qualsiasi di questi metodi di utilità, utilizzando il framework del metodo factory di Spring, per iniettare un valore analizzato nel bean. Ecco un esempio:

      

In questo esempio, il valore per “macchine” viene caricato dal file delle proprietà.

Se un metodo di utilità esistente non soddisfa le tue esigenze, è piuttosto semplice crearne di tuoi. Questa tecnica consente di eseguire qualsiasi metodo di utilità statica.

Spring EL rende più facile. Giava:

 List  machines; 

Contesto:

  

Se si rende la proprietà “machine” a un array di stringhe, spring lo farà automaticamente per te

 machines=B,C,D  public void setMachines(String[] test) { 

Dalla versione 3.0, è anche ansible leggere l’elenco dei valori usando l’annotazione @Value.

File di proprietà:

 machines=B,C,D 

Codice Java:

 import org.springframework.beans.factory.annotation.Value; @Value("#{'${machines}'.split(',')}") private List machines;