@EnableCaching-Anmerkung im Frühjahr

@EnableCaching Annotation ist die annotationsgesteuerte Cache-Verwaltungsfunktion im Spring Framework. Diese Anmerkung wurde der Feder seit der Version 3.1 hinzugefügt. Wenn Sie diese Annotation verwenden, müssen Sie die XML-Bean-Definitionen für den Cache-Manager nicht schreiben.

@EnableCaching im Spring Framework

@EnableCaching im Spring Framework

Wenn Sie Ihre Konfigurationsklasse mit Anmerkungen versehen @EnableCaching Annotation löst dies einen Postprozessor aus, der jede Spring-Bean auf das Vorhandensein von Caching-Annotationen für öffentliche Methoden durchsucht. Wenn eine solche Annotation gefunden wird, wird automatisch ein Proxy erstellt, der den Methodenaufruf abfängt und das Caching-Verhalten entsprechend behandelt.

Wenn Sie mehr über das Caching erfahren möchten, lesen Sie bitte mein Tutorial zum Spring-Caching. Dieses Tutorial hilft Ihnen, die Verwendung von zu verstehen @EnableCaching Anmerkung im Frühjahr. Wenn Sie Fragen haben, schreiben Sie diese bitte in den Kommentarbereich.

Hier ist ein einfaches Beispiel, das die Verwendung von demonstriert @EnableCaching Funktionalität. Im folgenden Code versuche ich, eine Methode im Cache zwischenzuspeichern Book Klasse.

@EnableCaching-Beispiel

Book.java

import org.springframework.cache.annotation.Cacheable;

public class Book {
	@Cacheable(value = { "sampleCache" })
	public String getBook(int id) {
		System.out.println("Method executed..");
		if (id == 1) {
			return "Book 1";
		} else {
			return "Book 2";
		}
	}
}

CachingConfig.java

import java.util.Arrays;

import org.springframework.cache.CacheManager;
import org.springframework.cache.annotation.EnableCaching;
import org.springframework.cache.concurrent.ConcurrentMapCache;
import org.springframework.cache.support.SimpleCacheManager;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
@EnableCaching
public class CachingConfig {
	@Bean
	public Book book() {
		return new Book();
	}

	@Bean
	public CacheManager cacheManager() {
		SimpleCacheManager cacheManager = new SimpleCacheManager();
		cacheManager.setCaches(Arrays.asList(new ConcurrentMapCache("sampleCache")));
		return cacheManager;
	}
}

Die obige Java-Konfiguration entspricht dem Schreiben der folgenden XML-Konfigurationen in Ihre Spring-Konfigurationsdatei:

<beans>
     <cache:annotation-driven/>
     <bean id="book"  />
     <bean id="cacheManager"  >
         <property name="caches">
             <set>
                 <bean  >
                     <property name="name" value="sampleCache"/>
                 </bean>
             </set>
         </property>
     </bean>
 </beans>

EnableCachingAnnotationExample.java

import org.springframework.context.annotation.AnnotationConfigApplicationContext;

public class EnableCachingAnnotationExample {
	public static void main(String[] args) {
		AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(); 
		ctx.register(CachingConfig.class);
		ctx.refresh();
		Book book = ctx.getBean(Book.class);		
		// calling getBook method first time.
		System.out.println(book.getBook(1));
		// calling getBook method second time. This time, method will not
		// execute.
		System.out.println(book.getBook(1));
		// calling getBook method third time with different value.
		System.out.println(book.getBook(2));
		ctx.close();
	}
}

Wenn Sie das obige Programm ausführen, erhalten Sie die folgende Ausgabe:

Method executed..
Book 1
Book 1
Method executed..
Book 2

@EnableCaching-Parameter

Meistens muss man das verwenden @EnableCaching Anmerkung ohne Parameter. Diese Anmerkung stellt jedoch drei Parameter bereit:

  • Modus – Dieser Parameter gibt an, wie Caching-Hinweise angewendet werden sollen.
  • Befehl – Dieser Parameter gibt die Reihenfolge der Ausführung des Caching-Advisors an, wenn mehrere Advices an einem bestimmten Joinpoint angewendet werden (Lesen Sie auch: AOP in Spring.
  • ProxyTargetClass – Dieser Parameter gibt an, ob auf Unterklassen basierende (CGLIB) Proxys im Gegensatz zu auf Standard-Java-Schnittstellen basierenden Proxys erstellt werden sollen.

Kommentar verfassen

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

Nach oben scrollen