English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
O framework SpringBoot permite integrar vários provedores de cachepor exemplo EhCache, Redis, Hazelcast, Infinispan, Caffeine,etc. Os provedores de cache permitem que os desenvolvedores configurem caches transparente e explicitamente em suas aplicações. Devemos usar cache, pois isso reduz o número de execuções e melhora o desempenho da aplicação.
No Spring, a abstração de cache não fornece o espaço real do cache. Isso depende org.springframework.cache.Cache ou org.springframework.cache.CacheManager abstração da interface.
O Frameworko Spring Boot simplifica a implementação do cache através da configuração automática. Ele busca bibliotecas e arquivos de configuração no caminho da classe e inicializa os Beans de dependência necessários durante o início do aplicativo. A configuração automática do cache inclui os seguintes passos:
adicionamos anotações no arquivo de configuração @EnableCaching . adicionamos no caminho da classe as necessáriasbiblioteca de cache. na raiz do caminho da classe, adicionamos para o provedor de cachearquivo de configuração.
Por exemplo, se quisermos implementar no nosso aplicativo EhCache Primeiro, ativamos o cache no arquivo de configuração.
@SpringBootApplication @EnableCaching public class Employee { @Bean public CacheManager cacheManager() { //algum código } }
em pom.xml no arquivo EhCache Dependências. Ele adiciona as bibliotecas necessárias ao caminho da classe.
<dependency> <groupId>org.ehcache</groupId> <artifactId>ehcache</artifactId> </dependency>
Por fim, configure o arquivo de configuração do provedor de cache. Aqui, estamos usando EhCache, portanto, precisamos configurá-lo na raiz do caminho da classe. ehcache.xml arquivo.
quando não definimos CacheManager ou CacheResolver ,O Frameworko Spring Boot tenta detectar os seguintes provedores de cache:
Generic JCache EhCache Hazelcast Infinispan Couchbase Redis Caffeine Simples
Se o Spring Boot encontrar múltiplos provedores de cache no caminho da classe, nessa situação, devemos no}} application.properties especificamente no arquivo
spring.cache.ehcache.provider=net.sf.ehcache.CacheManager spring.cache.ehcache.config=classpath:config/another-config.xml
Podemos usar a propriedade spring.cache.type configuração de provedor de cache específico. Se desejar desativar o cache, use-o em ambientes específicos.
spring.cache.type=none
O Framework Spring Boot fornece uma dependência de inicialização, que adiciona dependências básicas de cache no aplicativo. Pelo padrão, a dependência de inicialização de cache fornece spring-context-support pom.xml.
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-context-support</artifactId> <version>5.2.3.RELEASE</version> </dependency>
O Framework Spring Boot automaticamente configura o CacheManager, podendo ser implementado CacheManagerCustomizer A interface fornece mais personalizações.
Neste exemplo seguinte, configuramos um sinalizador que passa valores nulos para o mapeamento principal.
@Bean public CacheManagerCustomizer<ConcurrentMapCacheManager> cacheManagerCustomizer() { return new CacheManagerCustomizer<ConcurrentMapCacheManager>() { @Override public void customize(ConcurrentMapCacheManager cacheManager) { cacheManager.setAllowNullValues(false); } }; }
O bean acima precisa de uma configuração automática ConcurrentMapCacheManager Se o ConcurrentMapCacheManager não estiver configurado automaticamente, o personalizador não chamará de nenhuma forma. Podemos usar qualquer quantidade de programas personalizados e usar anotações @Order ou @Ordered.
Se spring-context-definiu pelo menos um org.springframework.cache.Cache.Cache bean que usará cache genérico. CacheManager empacotado e configurado todos os beans.
JCache é javax.cache.spi.CahingProviderEle está localizado no caminho da classe JSR 107em.-boot-starter-cache fornecido JCacheCacheManagerTambém podemos adicionar outras bibliotecas de cache.
EHCache é uma biblioteca de código aberto baseada em Java, amplamente utilizada. Para usar o EhCache, devemos usar as seguintes dependências.
<dependency> <groupId>org.ehcache</groupId> <artifactId>ehcache</artifactId> </dependency>
Existem duas maneiras de configurar o EhCache:
Primeiro, configuramos o arquivo Java POJO (onde todos os parâmetros de configuração são configurados através da API EhCache). Em segundo lugar, configuramos o EhCache através do arquivo XML, com base na arquitetura fornecida.
O EhCache usa um nome arquivo ehcache.xml. se o aplicativo encontrar o arquivo no caminho da classe, então para spring-boot-starter-cache fornecido EhCacheCacheManager 。
spring.cache.ehcache.config=classpath:config/demo-config.xml
Quando habilitamos cache em nossa aplicação, o Spring Boot configurará automaticamente HazelcastInstance Empacotado no CacheManager. Ele distribui dados de forma equitativa entre os nós. Podemos usar as seguintes propriedades para configurar o Hazelcast.
spring.hazelcast.config=classpath:config/demo-hazelcast.xml
Se essa propriedade não for configurada, o Spring Boot tentará encontrar no caminho da classe. hazelcast.xml (configuração do arquivo Hazelcast) arquivo.
Infinispan é uma biblioteca Java embarcada. É usada como Cacheou Rede de dados。 Chave-valorArmazenamento de dados em forma. Pode ser facilmente integrado com JCache, JPA Quarkus, Spring e outros.
não possui um local de arquivo padrão, portanto, devemos especificá-lo explicitamente. Se o infinispan não for especificado explicitamente, será usado o iniciador padrão.
spring.cache.infinispan.config=infinispan.xml
ao implementar couchbase-spring-cache e automaticamente configurado quando configurado CouchebaseCacheManager . Todas as operações relacionadas ao cache são realizadas em Bucket em execução. Ele permite que configuremos as propriedades spring.cache.cache-para criar outros caches (se necessário).
Programas personalizados nos permitem criar outros buckets onde podemos criar outro cache.
Vamos entender os conceitos acima por meio de um exemplo.
Suponha que precisemos de três caches nomeadas cacheA , cacheB,e cacheC . cacheA e cacheB estão localizados no bucket principal (ou seja, o bucket configurado automaticamente) cacheC está em outro bucket, que pode viver alguns segundos, por exemplo4segundos. Portanto, podemos criar cacheA e cacheB especificando as propriedades, conforme mostrado a seguir:
spring.cache.cache-names=cacheA, cacheB
ao configurar Redis ao configurar RedisCacheManager também permite que usemos as propriedades spring.cache.cache-names criar outros caches. Podemos usar as propriedades spring.cache.redis.* para implementar a configuração padrão.
Podemos usar RedisCacheConfiguration controle completo da configuração padrão. <strong>grão.</strong>
spring.cache.cache-names=cacheA, cacheB spring.cache.redis.time-to-live=100000
As configurações de propriedades acima configuram dois caches, chamados cacheA e cacheB, com uma vida útil de10minutos.
O Caffeine é uma biblioteca de cache baseada em Java. Ele também fornece um cache em memória. Se o spring-boot-starter-A dependência de cache encontrou o Caffeine na classe path e configurará automaticamente CaffeineCacheManger Se desejar usar o Caffeine em seu aplicativo, é necessário adicionar os seguintes itens de dependência:
<dependency> <groupId>com.github.ben-manes.caffeine</groupId> <artifactId>caffeine</artifactId> <version>2.7.0</version> </dependency>
Usando o cache de café, podemos usar as propriedades A especificação spring.cache.caffeine.spec define o cacheTamanhoeTempo de Vida. Por exemplo:
spring.cache.cache-names=cacheA,cacheB spring.cache.caffeine.spec=maximumSize=500,expireAfterAccess=600s
A configuração acima cria dois caches chamados cache1e cache2do cache. O tamanho máximo do cache é 500 com o tempo de vida máximo de 6 segundos.
Esta é a implementação padrão. Se não for especificado o provedor de cache. Se o Spring Boot não encontrar nenhum provedor de cache na classpath, ele ConcurrentHashMap Configurar como armazenamento de cache.
Por exemplo, se precisarmos de dois caches, use configure seus nomes. As seguintes propriedades:
spring.cache.cache-names=cache1,cache2
Quando usamos a anotação @EnableCaching para ativar o cache, o aplicativo precisa de uma configuração apropriada. Quando queremos em um ambiente específico DesativarUsar Cache. Nós usamos as propriedades spring.cache.type Desativar Cache.
spring.cache.type=none