2015-02-27 8 views
9

Ho intenzione di utilizzare Spring Boot per il mio incarico. È una tipica applicazione server con connessione al database. So che posso usare Spring Configuration per esternare le mie proprietà, ad es. Dettagli della connessione db. Ma ho anche altre proprietà dinamiche che devono essere aggiornate in fase di runtime. per esempio. pinne/flag di funzionalità. Alcune funzioni della mia applicazione devono essere controllate dinamicamente, ad es. immaginare una proprietà come app.cool-feature.enable = true e poi dopo un po 'la stessa caratteristica sarebbe stata disattivata per app.cool-feature.enable = falseCome configurare le proprietà dinamiche mentre si utilizza l'avvio a molla?

Qualche suggerimento che cosa è la migliore pratica circa l'ingestione di un comportamento così dinamico in fase di runtime? Mi vengono in mente le seguenti opzioni per attivare il cambiamento ...

  • Invia un messaggio JMS a istanza del server con cambio al di sopra di proprietà
  • chiamata un'API endpoint esposto nell'istanza del server per esempio POST http://myapp/admin/config/update { "config": { "app.cool-feature.enable": true} }

So che posso scrivere il mio codice personalizzato del presente (sarebbe per il 3 ° tempo), ma mi chiedo solo se esiste già un modo standard/pratica comune per le configurazioni di proprietà dinamiche di cui non sono a conoscenza. Sarebbe anche bello poter lavorare con altre soluzioni come Apache ZooKeeper, coreos etcd, Netflix curator etc e avere una stretta integrazione con Spring.

Pensieri?

risposta

2

Si potrebbe desiderare di dare un'occhiata a Togglz: www.togglz.org

Da loro homepage:

Togglz è un'implementazione della funzione Attiva o disattiva modello per Java. Le levette di funzionalità sono pratiche di sviluppo agili molto comuni nel contesto di distribuzione e distribuzione continue. L'idea di base è associare un interruttore a ogni nuova funzione su cui stai lavorando. Ciò consente di abilitare o disabilitare queste funzionalità al runtime dell'applicazione, anche per i singoli utenti.

Togglz non è vincolato alla struttura a molla ma lo supporta.

5

Se si utilizza lo stivale Spring, consultare @ConfigurationProperties. Ti verrà richiesto di fornire un bean per accedere alle tue proprietà. Pertanto, i valori originali delle proprietà possono essere modificati durante l'esecuzione poiché sono proprietà regolari di un bean.

Nel tuo caso, ad esempio:

@Component 
@ConfigurationProperties 
public class JmsProperties { 

    private String url = "vm://localhost" (let's suppose you use ActiveMQ); 

    public String getUrl()... 
    public void setUrl(String value)... 

} 

E poi iniettare questo fagiolo in voi JMS messaggio ascoltatore.

Naturalmente se si utilizza JMS e di avvio di primavera, con configurazione automatica si dispone già di classe Properties ...

3

il vostro requisito è un buon caso d'uso per "Primavera cloud Config" dove non solo si può avere il vostro tutto configurazioni localizzate centralmente ma anche in grado di aggiornarle dinamicamente e che a loro volta possono essere selezionate dalla tua app di riferimento dal momento successivo.Fare riferimento a questa molla standard link per lo stesso.

Problemi correlati