Integração de bota de cafeína e primavera
A cafeína é uma versão reescrita do cache de goiaba usando o Java 8, que substituirá a goiaba no Spring Boot 2.0. Se a cafeína aparecer, o CaffeineCachemanager será configurado automaticamente. Use a propriedade Spring.cache.cache-names para criar caches na inicialização e pode ser personalizada (em ordem) com a seguinte configuração:
Por exemplo, a configuração a seguir cria um cache Foo e Bar com um número máximo de 500 e um tempo de sobrevivência de 10 minutos:
spring.cache.cache-names = foo, barspring.cache.caffeine.spec = maximumsize = 500, expeRexhterAccess = 600s
Além disso, se com.github.benmanes.caffeine.cache.cacheloader for definido, ele estará automaticamente associado ao Caffeinecachemanager. Como o Cacheloader associará todos os caches gerenciados pelo Cache Manager, ele deve ser definido como Cacheloader <Object, Object>, e a configuração automática ignorará todos os tipos genéricos.
Introduzir dependências
<Ependency> <PuerpId> org.springframework.boot </frugid> <stifactId> spring-boot-starter-cache </stutifactId> </dependency> <pendence> <purfactid> com.github.ben-manes.caffeine </groupid> <stifactid> </versão </sersusftIftIf.
Ativar suporte ao cache
Use a anotação @enableCaching para ativar o suporte ao cache
@SpringbooTApplication@EnableCaching // Ativar cache, a classe pública especificada SpringbootStudentCacheCaffeineApplication {public static void main (string [] args) {springappplication.run (springbootstudentcachecaffeineApplication.class, args); }}Arquivo de configuração
Adicionado configurações especiais para cache, como capacidade máxima, tempo de validade, etc.
spring.cache.cache-names = peoplespring.cache.caffeine.spec = InitialCapacidade = 50, maximumsize = 500, expireRethterWrite = 10s, refreshafterWrite = 5s
Se a configuração do refreshafterwrite for usada, um Cacheloader também deverá ser especificado, como:
/** * Este feijão deve ser especificado e a propriedade de configuração do refSeshafterWrite = 5s entrará em vigor * * @return */ @beanpublic Cacheloader <objeto, objeto> Cacheloader () {Cacheloader <objeto, object> Cacheloader = new CachelOader <) nulo; } // Reescreva esse método e retorne o valor antigo do valor e, em seguida, atualize o cache @Override Public Object Reload (chave do objeto, objeto OldValue) lança exceção {return OldValue; }}; Retornar Cacheloader;}Instruções de configuração de cafeína:
Perceber:
Código de amostra
/** * @author yuhao.wang */ @ServicePublic Classe PersonServiceImpl implementa Persevice {private Static Final Logger Logger = LoggerFactory.getLogger (PersenserviceImpl.class); @AUTOWIRED PERSONREPOSIITY PERSONREPOSIITY; @Override @cacheput (value = "pessoas", key = "#PERSON.ID") Pessoa pública salvar (pessoa da pessoa) {Pessoa P = PERSONREPOSITION.SAVE (pessoa); Logger.info ("é id, chave:" + p.getId () + "dados em cache"); retornar p; } @Override @cacheevict (value = "pessoas") // 2 public void Remover (idi longo) {logger.info ("Remova o cache de dados com id, chave" + id + ""); // A operação de exclusão real não é executada aqui} /** * Cache * Valor: cache o prefixo da chave. * Chave: Cache da chave do sufixo. * Sincronizar: Defina se o cache expirar, é necessário colocar apenas uma solicitação para solicitar o banco de dados e outras solicitações estiverem bloqueadas e o padrão é falso. */ @Override @cacheable (value = "pessoas", key = "#Person.id", Sync = true) Pessoa pública FindOne (pessoa da pessoa, string a, string [] b, list <long> c) {pessoa p = PERSONREPOSITEM.FYNDONE (PERSON.GETID ()); Logger.info ("para ID, chave:" + p.getId () + "dados estão em cache"); retornar p; } @Override @cacheable (value = "People1") // 3 public pessoa findOne1 () {pessoa p = PERSONREPOSIITY.Findone (2L); Logger.info ("Para ID, a chave é:" + p.getId () + "dados são armazenados em cache"); retornar p; } @Override @cacheable (value = "pessoas2") // 3 Public Pessoa FinDone2 (pessoa da pessoa) {Pessoa P = PERSONREPOSITION.Findone (PERSON.GETID ()); Logger.info ("Para ID, a chave é:" + p.getId () + "dados são armazenados em cache"); retornar p; }} Código fonte: https://github.com/wyh-spring-ecosystem-student/spring-boot-student/tree/releases
O exposto acima é todo o conteúdo deste artigo. Espero que seja útil para o aprendizado de todos e espero que todos apoiem mais o wulin.com.