2014-05-17 13 views
18

La mia applicazione Stivale Primavera corre con 3 configurazioni:Ottenere ambiente applicativo primavera in thymeleaf

  • application.properties -> per ambiente di sviluppo
  • application-test.properties -> per ambiente di test
  • application-production.properties -> per l'ambiente di produzione

Come è possibile ottenere in ambiente a foglia sottile l'applicazione è in esecuzione?

Devo includere il codice di Google Analytics solo nell'ambiente di produzione.

risposta

30

È possibile eseguire quanto segue se si dispone di un solo profilo alla volta.

<div th:if="${@environment.getActiveProfiles()[0] == 'production'}"> 
    This is the production profile - do whatever you want in here 
</div> 

Il codice di cui sopra si basa sul fatto che la primavera il dialetto del Thymeleaf consente di accedere fagioli utilizzando il simbolo @. E naturalmente l'oggetto Environment è sempre disponibile come bean Spring.

Si noti inoltre che Environment ha il metodo getActiveProfiles() che restituisce un array di stringhe (è per questo che [0] è usato nella mia risposta), che possiamo chiamare utilizzando standard di Primavera EL.

Se più di un profilo è attivo alla volta, una soluzione più robusta sarebbe utilizzare l'oggetto di utilità #arrays di Thymeleaf per verificare la presenza della stringa production nei profili attivi. Il codice in questo caso sarebbe:

<div th:if="${#arrays.contains(@environment.getActiveProfiles(),'production')}"> 
    This is the production profile 
</div> 
+0

Grazie mille, questo era esattamente quello che stavo cercando. – occurred

+0

@ volte sono contento di aiutare! Aiuterebbe i futuri lettori se accetti la risposta, perché in questo modo si potrebbe facilmente capire se è corretta senza dover leggere i commenti – geoand

+11

Nel frattempo c'è anche 'acceptProfiles (String ... profiles)' in 'Environment', che rende il controlla un po 'più agevolmente: '@ environment.acceptsProfiles (' produzione ')' – cfrick

Problemi correlati