English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Il framework SpringBoot consente l'integrazione di vari componenti Fornitori di cache, ad esempio EhCache, Redis, Hazelcast, Infinispan, Caffeine,e simili. I fornitori di cache permettono agli sviluppatori di configurare la cache in modo trasparente ed esplicito nell'applicazione. Dovremmo utilizzare la cache perché riduce il numero di esecuzioni e migliora le prestazioni dell'applicazione.
Spring non fornisce lo spazio reale della cache per l'astrazione della cache. Dipende org.springframework.cache.Cache o org.springframework.cache.CacheManager L'astrazione delle interfacce. L'astrazione della cache in Spring non fornisce lo spazio reale della cache. Dipende
Spring Boot Framework ha semplificato l'implementazione della cache tramite configurazione automatica. Cerca le librerie e i file di configurazione nel percorso della classe e inizializza i Bean delle dipendenze necessarie durante l'avvio dell'applicazione. La configurazione automatica della cache include i seguenti passaggi:
Aggiungere l'annotazione nel file di configurazione @EnableCaching 。 Aggiungere le librerie necessarie nel percorso della classe.Biblioteca di cache。 Aggiungere il fornitore di cache nel percorso della radice della classe.Configurazione。
Ad esempio, se vogliamo implementare in applicazione EhCache , per prima cosa abilitiamo la cache nel file di configurazione.
@SpringBootApplication @EnableCaching public class Employee { @Bean public CacheManager cacheManager() { //alcun codice } }
In pom.xml Aggiungere nel file EhCache Dipendenze. Aggiunge le librerie necessarie al percorso della classe.
<dependency> <groupId>org.ehcache</groupId> <artifactId>ehcache</artifactId> </dependency>
Infine, configurare il file di configurazione del fornitore di cache. Qui stiamo utilizzando EhCache, quindi dobbiamo configurare ehcache.xml file.
Quando non definiamo CacheManager o CacheResolver , Spring Boot Framework proverà a rilevare i seguenti fornitori di cache:
Generic JCache EhCache Hazelcast Infinispan Couchbase Redis Caffeine Simple
Se Spring Boot trova più fornitori di cache nel percorso della classe, in questo caso, dobbiamo application.properties Specificare chiaramente il fornitore di cache nel file.
spring.cache.ehcache.provider=net.sf.ehcache.CacheManager spring.cache.ehcache.config=classpath:config/another-config.xml
Possiamo utilizzare l'attributo spring.cache.type Impostare un fornitore di cache specifico. Se si desidera disabilitare la cache, utilizzarlo in un ambiente specifico.
spring.cache.type=none
Spring Boot Framework提供了一个启动程序依赖项,该依赖项在应用程序中添加了基本的缓存依赖项。默认情况下,启动程序缓存依赖项提供 spring-context-support 依赖项。
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-context-support</artifactId> <version>5.2.3.RELEASE</version> </dependency>
Spring Boot Framework自动配置CacheManager,可以通过实现 CacheManagerCustomizer 接口进一步对其进行自定义。
在以下示例中,我们设置了一个传递标记主映射的空值。
@Bean public CacheManagerCustomizer<ConcurrentMapCacheManager> cacheManagerCustomizer() { return new CacheManagerCustomizer<ConcurrentMapCacheManager>() { @Override public void customize(ConcurrentMapCacheManager cacheManager) { cacheManager.setAllowNullValues(false); } }; }
上面的bean需要一个自动配置的 ConcurrentMapCacheManager 。如果ConcurrentMapCacheManager没有自动配置,则定制器将不会以任何方式调用。我们可以使用任意数量的定制程序,并使用注解 @Order o @Ordered。
如果spring-context-support定义了至少一个 org.springframework.cache.Cache.Cache bean,它将使用通用缓存。 CacheManager 捆绑并配置了所有bean。
JCache è javax.cache.spi.CahingProvider.. Si trova nel percorso della classe JSR 107. spring-boot-starter-cache fornisce JCacheCacheManager.Possiamo anche aggiungere altre librerie di cache.
EHCache è un'open source basata su Java, largamente utilizzata. Per utilizzare EhCache, dobbiamo utilizzare i seguenti dipendenze.
<dependency> <groupId>org.ehcache</groupId> <artifactId>ehcache</artifactId> </dependency>
Ci sono due metodi per configurare EhCache:
Prima di tutto, configuriamo il file Java POJO (dove tutti i parametri di configurazione sono configurati tramite l'API EhCache). In secondo luogo, configuriamo EhCache attraverso il file XML, basandoci sulla struttura fornita.
EhCache utilizza un nome il file ehcache.xml. Se l'applicazione trova il file nel percorso della classe, è fornito da spring-boot-starter-cache EhCacheCacheManager . Possiamo utilizzare le seguenti proprietà per configurare il file XML:
spring.cache.ehcache.config=classpath:config/demo-config.xml
Quando abilitiamo la cache nell'applicazione, Spring Boot configurerà automaticamente HazelcastInstance imballato nel CacheManager. Distribuisce in modo equo i dati tra i nodi. Possiamo utilizzare le seguenti proprietà per configurare Hazelcast.
spring.hazelcast.config=classpath:config/demo-hazelcast.xml
Se non è impostata questa proprietà, Spring Boot cercherà di trovare nel percorso della classe. hazelcast.xml (configurazione Hazelcast) file.
Infinispan è una libreria Java embedded. Viene utilizzato come cacheo griglia di dati. Si basa su chiave-valorememorizzare i dati in forma. Può essere facilmente integrato con JCache, JPA Quarkus, Spring e altri.
Non ha una posizione di file predefinita, quindi dobbiamo specificarla chiaramente. Se non viene specificato chiaramente Infinispan, verrà utilizzato il programma di avvio predefinito.
spring.cache.infinispan.config=infinispan.xml
Quando implementiamo couchbase-spring-cache e viene configurato Couchebase, viene configurato automaticamente CouchebaseCacheManager . Tutte le operazioni relative alla cache si eseguono Bucket Eseguiti. Ci permette di impostare le proprietà spring.cache.cache-name per creare altre cache (se necessario).
Programmi personalizzati ci permettono di creare altri bucket, in cui possiamo creare un'altra cache.
Facciamo un esempio per comprendere i concetti sopra descritti.
Supponiamo di aver bisogno di tre cache denominate cacheA , cacheB,和 cacheC . cacheA e cacheB si trovano nel bucket principale (cioè il bucket configurato automaticamente) cacheC si trova su un altro bucket, che può esistere per alcuni secondi, ad esempio 4 secondi. Pertanto, possiamo creare cacheA e cacheB specificando le proprietà come segue:
spring.cache.cache-names=cacheA, cacheB
Quando configuriamo Redis quando viene configurato automaticamente RedisCacheManager . Ci permette anche di utilizzare le proprietà spring.cache.cache-names Creare altre cache. Puoi utilizzare le proprietà spring.cache.redis.* per implementare la configurazione predefinita.
Possiamo utilizzare RedisCacheConfiguration Gestione completa della configurazione predefinita. <strong>Bean.</strong>
spring.cache.cache-names=cacheA, cacheB spring.cache.redis.time-to-live=100000
Le seguenti proprietà configurano due cache, denominate cacheA e cacheB, con una durata di vita di 10 minuti.
Caffeine è una libreria di cache basata su Java. Fornisce anche una cache in memoria. Se la dipendenza spring-boot-starter-cache trova Caffeine nel percorso delle classi, viene configurato automaticamente CaffeineCacheManger Se desidera utilizzare Caffeine nell'applicazione, è necessario aggiungere le seguenti dipendenze:
<dependency> <groupId>com.github.ben-manes.caffeine</groupId> <artifactId>caffeine</artifactId> <version>2.7.0</version> </dependency>
通过咖啡因缓存,我们可以使用属性 spring.cache.caffeine.spec定义缓存的大小和生存时间。 例如:
spring.cache.cache-names=cacheA,cacheB spring.cache.caffeine.spec=maximumSize=500,expireAfterAccess=600s
上面的配置创建两个名为cache1和cache2的缓存。缓存的最大大小为 500 ,最长生存时间为 6 秒。
这是默认实现。如果未指定缓存提供程序。如果Spring Boot在类路径中找不到任何缓存提供程序,则会将 ConcurrentHashMap 配置为缓存存储。
例如,如果我们需要两个缓存,请使用设置它们的名称。以下属性:
spring.cache.cache-names=cache1,cache2
当我们使用@EnableCaching注解启用缓存时,应用程序需要适当的配置。当我们要在特定环境中 禁用使用缓存时。我们使用属性 spring.cache.type 禁用缓存。
spring.cache.type=none