Caching-Unterstützung in Spring Boot

In diesem Tutorial werden die neuen Funktionen hervorgehoben, die im Rahmen von Spring Boot 1.3.0 zur Caching-Unterstützung hinzugefügt wurden. Caching wurde von Spring Boot unterstützt, es gibt jedoch bisher keine automatische Konfigurationsoption für das Caching in Spring Boot. Die neue Spring Boot-Version 1.3.0 hat die folgenden Funktionen eingeführt, die die Verwendung des Cachings in Spring Boot-basierten Anwendungen einfacher machen:

  • Für das Caching wird die automatische Konfiguration unterstützt.
  • Der Spring-Boot-Aktuator fügt Caching-Metriken zum /metrics-Endpunkt hinzu.
  • Caching-Unterstützung in Spring Boot

    Caching-Unterstützung in Spring Boot

    In diesem Tutorial habe ich die beiden oben genannten neuen Funktionen im Rahmen der Caching-Unterstützung in Spring-Boot-Anwendungen erklärt. Ich habe dieselbe Beispielanwendung verwendet, die als Teil des Spring Data-Tutorials verwendet wurde, und die Caching-Implementierung (ehcache) zusätzlich zu demselben Beispiel hinzugefügt. Die überarbeitete Implementierung der Beispielanwendung habe ich am Ende dieses Tutorials zum Download hochgeladen. In diesem Tutorial werden lediglich die Caching-spezifischen Teile erläutert. Hoffentlich hilft das. Wenn Sie Fragen haben, schreiben Sie diese bitte in den Kommentarbereich.

    Caching der automatischen Konfiguration

    Schritte zur automatischen Konfiguration des Spring Boot Cache

    Schritte zur automatischen Konfiguration des Spring Boot Cache

    Spring Boot vereinfacht die Konfiguration der Caching-Implementierung durch Unterstützung der automatischen Konfiguration. Wenn Sie mit dem Wort „Autokonfiguration“ nicht vertraut sind, finden Sie hier die Definition: Die Autokonfiguration in Spring Boot durchsucht die Bibliotheken und Konfigurationsdateien im Klassenpfad und initialisiert die erforderlichen Abhängigkeits-Beans beim Start der Anwendung. Dadurch entfällt die Notwendigkeit, die Beans manuell zu konfigurieren, damit sie instanziiert und einsatzbereit sind.

    Zum Beispiel: Wenn Sie ehcache.xml im Klassenpfad haben und die ehcache 2.x-Bibliotheken vorhanden sind, konfiguriert Spring Boot den ehcache als Caching-Implementierung für Ihre Anwendung, indem es die Cache-Manager für ehcache initialisiert.

    Vor der automatischen Konfiguration benötigen Sie die folgenden Codezeilen in der Spring-Boot-Konfigurationsdatei:

    @SpringBootApplication
    @EnableCaching
    public class MyBooks {
        @Bean
        public CacheManager cacheManager() { ...}
    
        ...
    }
    

    Mit Spring Boot 1.3.0 entfällt auch der letzte Schritt des Hinzufügens der Bean-Definitionen. Im Folgenden sind die Schritte aufgeführt, um ehcache für Ihre Anwendung zu aktivieren:

  • Hinzufügen @EnableCaching Anmerkung in der Spring-Boot-Konfigurationsklasse. Diese Anmerkung ist der Indikator für die Aktivierung des Caching-Mechanismus in Ihrer Anwendung.
  • Der nächste Schritt besteht darin, die erforderlichen Bibliotheken im Klassenpfad hinzuzufügen. Wenn Sie den ehcache als Cache-Implementierung verwenden, fügen Sie die Abhängigkeit zum hinzu POM.xml Datei.
  • Der nächste Schritt besteht darin, die Konfigurationsdatei für den Cache-Anbieter hinzuzufügen. Wenn Sie den Ehcache verwenden, fügen Sie den hinzu ehcache.xml im Stammverzeichnis des Klassenpfads.
  • Spring Boot versucht, die folgenden Cache-Anbieter in der unten angegebenen Reihenfolge zu erkennen:

  • Generisch
  • EhCache 2.x
  • Hazelcast
  • Infinispan
  • JCache (JSR-107)
  • Redis
  • Guave
  • Einfach
  • Wenn der Spring Boot mehr als einen Cache-Anbieter im Klassenpfad findet, muss in diesem Fall der Cache-Anbieter explizit angegeben werden. Fügen Sie die folgenden Einträge hinzu application.properties Datei:

    # Only necessary if more than one provider is present
    spring.cache.ehcache.provider=net.sf.ehcache.CacheManager
    spring.cache.ehcache.config=classpath:config/another-config.xml
    

    Caching-Metriken im Spring Boot Actuator

    /metrics Der Endpunkt stellt die verschiedenen Metriken zur laufenden Anwendung bereit. Spring Boot 1.3.0 fügt die Details zur Cache-Implementierung auch als Teil hinzu /metrics Endpunkt. Folgende Details werden offengelegt:

    • Die aktuelle Größe des Caches (cache.xxx.size)
    • Trefferquote (cache.xxx.hit.ratio)
    • Missverhältnis (cache.xxx.miss.ratio)

    Notiz: Die Cache-Metriken können für jeden Anbieter unterschiedlich sein. Daher müssen Sie in der Dokumentation des Anbieters nachsehen, wie der Anbieter die Kennzahlen zu Treffer-/Miss-Verhältnissen offenlegt. Als ich die Beispielanwendung ausprobiert habe, konnte ich das Hit/Miss-Verhältnis für ehcache nicht ermitteln, es sieht so aus, als ob es so wäre irgendein Problem derzeit. Die Größe der Cache-Anzeige können Sie dem folgenden Screenshot entnehmen. Ich werde das Tutorial mit weiteren Details aktualisieren.

    Spring Boot Cache – Ehcache

    Spring Boot Cache – Ehcache

    Beispielanwendung

    Jetzt überprüfen wir die Beispielanwendung, die die automatische Konfiguration für das Caching unterstützt und die Cache-Metriken offenlegt. Wie ich bereits sagte, handelt es sich bei diesem Beispiel um die Erweiterung des Spring Data Tutorials. Sehen Sie sich das Tutorial zu Federdaten an, wenn Sie verstehen möchten, wie Federdaten funktionieren.

    Hier ist die aktualisierte SpringBootApplication.java. Das einzige Update ist @EnableCaching Anmerkung.

    @Configuration
    @SpringBootApplication
    @EnableJpaRepositories
    @EnableCaching
    public class Application {
    	public static void main(String[] args) {
    		SpringApplication.run(Application.class, args);
    	}
    
    }
    

    Sie müssen das Caching für die eine Methode aktivieren. Dasselbe gilt für andere Methoden. Wenn Sie weitere Details zur Spring-Caching-Abstraktion suchen, lesen Sie bitte unser Spring-Cache-Tutorial.

    @Cacheable ("books")
    	public Book findOne(long id);
    

    Einfach hinzufügen ehcache.xml Datei im Stammverzeichnis des Klassenpfads:

    <?xml version="1.0" encoding="UTF-8"?>
    <ehcache>
    	<diskStore path="java.io.tmpdir" />
    	<defaultCache maxElementsInMemory="10" eternal="false" timeToIdleSeconds="120" timeToLiveSeconds="120" overflowToDisk="true" />
    	<cache name="books" maxElementsInMemory="50" eternal="false" overflowToDisk="true" timeToIdleSeconds="0" timeToLiveSeconds="86400" />
    </ehcache>
    

    Die Projektstruktur würde wie folgt aussehen:

    Struktur des Spring Boot Cache-Projekts

    Struktur des Spring Boot Cache-Projekts

    Wenn Spring Boot den Ehcache initialisiert, werden in der Konsole die folgenden Meldungen angezeigt, die die Initialisierung des Ehcaches durch die Beispielanwendung bestätigen.

    Bean 'org.springframework.cache.annotation.ProxyCachingConfiguration' of type [class org.springframework.cache.annotation.ProxyCachingConfiguration$$EnhancerBySpringCGLIB$$ce3ea348] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
    Bean 'org.springframework.boot.autoconfigure.cache.CacheAutoConfiguration' of type [class org.springframework.boot.autoconfigure.cache.CacheAutoConfiguration$$EnhancerBySpringCGLIB$$866a36c] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
    Bean 'spring.cache.CONFIGURATION_PROPERTIES' of type [class org.springframework.boot.autoconfigure.cache.CacheProperties] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
    Bean 'org.springframework.boot.autoconfigure.cache.CacheManagerCustomizers' of type [class org.springframework.boot.autoconfigure.cache.CacheManagerCustomizers] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
    Bean 'org.springframework.boot.autoconfigure.cache.EhCacheCacheConfiguration' of type [class org.springframework.boot.autoconfigure.cache.EhCacheCacheConfiguration$$EnhancerBySpringCGLIB$$f507a8aa] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
    Bean 'ehCacheCacheManager' of type [class net.sf.ehcache.CacheManager] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
    Bean 'cacheManager' of type [class org.springframework.cache.ehcache.EhCacheCacheManager] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
    cacheAutoConfigurationValidator' of type [class org.springframework.boot.autoconfigure.cache.CacheAutoConfiguration$CacheManagerValidator] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
    

    Laden Sie den Quellcode herunter

    Symbol

    Spring Data JPA mit Spring Boot-Beispielanwendung

    1 Datei(en) 12,43 KB Download: Spring Data JPA mit Spring Boot

    Zusammenfassung

    In den obigen Abschnitten erfahren Sie, wie Sie das Caching in Spring-Boot-Anwendungen automatisch konfigurieren und wie Sie die Caching-Metriken mithilfe des Spring-Boot-Aktuators verfügbar machen. Dieses Tutorial konzentrierte sich hauptsächlich auf die Ehcache-Implementierung. Die anderen Details zum Caching-Anbieter werde ich in Zukunft hinzufügen. Bleiben Sie auf dem Laufenden, um weitere Updates zum Spring-Boot-Caching zu erhalten.

    Vielen Dank, dass Sie meinen Blog gelesen haben!! Viel Spaß beim Lesen und viel Spaß!!

    Kommentar verfassen

    Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

    Nach oben scrollen