2016-03-10 9 views
5

Ich suche 2 Dinge:Spring Boot - Wie @Cachable während der Entwicklung deaktivieren?

  1. Wie alle Caching während der Entwicklung mit Frühlings-boot "dev" Profil deaktivieren. Es ist keine allgemeine Einstellung, um alles in application.properties abzuschalten. Was ist der einfachste Weg?

  2. Wie kann das Caching für eine bestimmte Methode deaktiviert werden? Ich habe versucht, Spel wie diese zu verwenden:

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

Aber ich kann es an die Arbeit. Es gibt ein paar Fragen zu SO im Zusammenhang damit, aber sie beziehen sich auf XML-Konfiguration oder andere Dinge, aber ich benutze Spring Boot 1.3.3 und das verwendet automatische Konfiguration.

Ich möchte die Dinge nicht übermäßig komplizieren.

+7

Fügen Sie Ihrer Anwendung 'dev.properties'' spring.cache.type = NONE' hinzu. –

+0

'spring.cache.type = NONE' schaltet das Caching nicht aus, es verhindert, dass Dinge zwischengespeichert werden. d. h. es fügt Ihrem Programm noch 27 AOP-/Interceptor-Stacks hinzu, es ist nur, dass es nicht zwischenspeichert. Es hängt davon ab, was er mit "alles ausschalten" meint. –

Antwort

13

Der Cache-Typ wird standardmäßig automatisch erkannt und konfiguriert. Sie können jedoch angeben, welcher Cachetyp verwendet werden soll, indem Sie spring.cache.type zu Ihrer Konfiguration hinzufügen. Um es zu deaktivieren, setzen Sie den Wert auf NONE.

Wie Sie es für ein bestimmtes Profil tun wollen fügen Sie es zu, dass Profile application.properties in diesem Fall die application-dev.properties ändern und

spring.cache.type=NONE 

Dieses Caching deaktivieren hinzufügen.

+1

Was ist mit meiner zweiten Frage mit SpEl? Es gibt einige bestimmte Methoden, für die ich während der Entwicklung kein Caching durchführen möchte. – Wouter

2

Für Ihre zweite Frage etwas tun, wie folgt aus:

eine Methode schreiben, die, ob ein bestimmtes Profil

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

diese dann für Ihre Spel bestimmt aktiv ist (Umwelt ist Ihre injiziert Environment) Bedingung für die zwischenspeicherbar Anmerkung

-1

wenn es SpringBoot Projekt ist, kommentieren sie in der Anwendungsklasse @EnableCaching, zB:

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

} 
+1

Wow, Sie könnten auch nur den gesamten Code löschen, der zum Caching vorhanden ist ... – T3rm1

+0

pls Blick auf Frage .. Code sollte nicht geändert werden, wie env. Es sollte konfigurationsgesteuert sein – navaltiger