2016-03-10 13 views
5

sto cercando 2 cose:Spring Boot - Come disabilitare @Cachable durante lo sviluppo?

  1. Come disattivare la memorizzazione nella cache durante lo sviluppo con avvio Primavera "dev" profilo. Non ci sono cuciture per essere un'impostazione generale per disattivare tutto in application.properties. Qual è il modo più semplice?

  2. Come disattivare la memorizzazione nella cache per un metodo specifico? Ho cercato di usare SPEL in questo modo:

    @Cacheable(value = "complex-calc", condition = "#{${spring.profiles.active} != 'dev'}") public String someBigCalculation(String input){ ... }

Ma posso farlo funzionare. Ci sono un paio di domande su SO relative a questo, ma si riferiscono alla configurazione XML o ad altre cose, ma sto usando Spring Boot 1.3.3 e questo usa la configurazione automatica.

Non voglio complicare troppo le cose.

+7

aggiungere 'spring.cache.type = NONE' al proprio' application-dev.properties'. –

+0

'spring.cache.type = NONE' non cambia la memorizzazione nella cache, impedisce che le cose vengano memorizzate nella cache. cioè aggiunge ancora 27 strati di stack AOP/interceptor al tuo programma, è solo che non fa il caching. Dipende da cosa intende dire "spegni tutto". –

risposta

13

Il tipo di cache viene automaticamente rilevato e configurato automaticamente. Tuttavia, è possibile specificare il tipo di cache da utilizzare aggiungendo spring.cache.type alla configurazione. Per disabilitarlo, impostare il valore su NONE.

come si vuole farlo per un profilo specifico aggiungerlo al profilo che application.properties in questo caso modificare il application-dev.properties e aggiungere

spring.cache.type=NONE 

Questo disabiliterà la cache.

+1

E la mia seconda domanda con SpEl? Esistono alcuni metodi specifici che non desidero memorizzare nella cache durante lo sviluppo. – Wouter

2

Per la vostra seconda domanda fare qualcosa di simile:

Scrivete un metodo che determina se un particolare profilo è attivo (ambiente è la tua iniettato Ambiente)

boolean isProfileActive(String profile) { 
    return Arrays.asList(environment.getActiveProfiles()).contains(profile); 
} 

quindi utilizzare tale per il vostro spel condizione sulla annotazioni cacheable

-1

se si tratta di progetti SpringBoot, come commento @EnableCaching nella classe Application, ad esempio:

//@EnableCaching 
@SpringBootApplication 
public class CacheapplicationApplication{ 
    public static void main(String[] args){} 

} 
+1

Wow, potresti anche solo cancellare tutto il codice che è in atto per la cache ... – T3rm1

+0

pls guarda alla domanda .. il codice non dovrebbe essere cambiato come per env. dovrebbe essere guidato dalla configurazione – navaltiger

Problemi correlati