Conceito de cache da primavera
Começando no Spring 3.1, é fornecida uma maneira transparente de adicionar cache aos aplicativos de mola existentes, que é usado como @Transaction. Há uma camada de abstração entre o nível de aplicação e o armazenamento de back -end. Essa camada de abstração foi projetada para encapsular vários armazenamento de back -end (ehcache goiaba redis) para minimizar a intrusão causada pelo cache ao código comercial existente.
A tecnologia de cache da primavera também tem uma flexibilidade considerável. Não apenas ele pode usar o SPEL (linguagem de expressão da mola) para definir teclas de cache e várias condições, mas também fornece soluções de armazenamento temporárias de cache prontas para uso e também suporta integração com caches profissionais convencionais, como o ehcache.
Suas características estão resumidas da seguinte forma:
Conceito de design
Assim como outros serviços da estrutura da primavera, o Spring Cache primeiro fornece uma camada de abstração, e a abstração do núcleo é refletida principalmente nas duas interfaces.
org.springframework.cache.cache
org.springframework.cache.CacheManager
Cache significa o próprio cache
Cachemanager representa o processamento e o gerenciamento de caches, etc. O significado da abstração é bloquear as diferenças nos detalhes da implementação e fornecer escalabilidade. Essa camada de abstração de cache descreve o uso do cache e o armazenamento de back-end do cache, para que o armazenamento de back-end possa ser substituído facilmente no futuro.
Usando o cache da primavera em três etapas:
Declare o cache
@Cacheable ("livros") public book FindBook (ISBN ISBN) {...} O uso é muito simples. Adicione @cacheable e outras anotações ao método para armazenar em cache o resultado do método.
Quando um método é chamado, verifique primeiro se há alguma chamada para o mesmo parâmetro no cache do método. Nesse caso, consulte o cache e retorne o resultado. Caso contrário, execute a lógica do método específica e o cache do resultado do cache. Obviamente, esta série de lógica é transparente para o chamador. As notas para outras operações de cache são as seguintes (consulte a documentação oficial para obter detalhes):
Ligue o suporte do cache da primavera
<cache: anotação orientada />
Ou use o método de anotação @enablecaching
Configurar o armazenamento de back -end do cache
O Spring Cache fornece várias implementações de armazenamento de back-end interno: a seguir, são apresentadas as implementações específicas do Cachemanager.
Além disso, os dados da primavera fornecem dois gerentes de cache:
Se você usar caches distribuídos, como memcached ou redis, poderá implementar o cache e o Cachemanager e declará -lo no contexto. Se forem necessárias várias implementações diferentes de cache, vários cachemanagers podem ser encapsulados juntos em um modo de combinação.
Como a chave em cache é gerada
Todos sabemos que o método de armazenamento de cache geralmente é o valor -chave. Então, no cache da primavera, como é o conjunto de chaves? Aqui precisamos introduzir o KeyGenerator, responsável pela estratégia de geração de chaves, e o padrão é usar o SimpleKeyGenerator
Pode -se observar que é o valor de hash da matriz de parâmetro ordenada. Obviamente, os usuários podem personalizar a estratégia de geração de chaves.
Implementação do cache da primavera
O exposto acima é o uso geral do cache da primavera, que mostra como a primavera é implementada.
Ao aprender o código -fonte da primavera, há duas coisas a lembrar:
Lembre -se disso e é mais fácil entender o mecanismo de implementação e tempo de execução de alguns componentes na primavera.
O cache da primavera não é exceção. É uma implementação típica da Spring AOP. Na primavera, a AOP pode ser simplesmente entendida como um proxy (exceto aspectoj). Declaramos que a classe de método @cacheable será proxyed e, no proxy, a consulta em cache e as operações de definição são implementadas.
Criação de infraestrutura de cache
O artigo anterior (Visão geral do módulo da Spring AOP) falou sobre o fato de que o processo de criação da Spring AOP é essencialmente para implementar um prostitutor de beanPost, criar um proxy no processo de criação de um feijão e vincular todos os consultores aplicáveis ao feijão para o proxy e, finalmente, exponha -o ao recipiente.
Vários conceitos -chave do AOP Master em Spring Advisor Advisor Advice Pointcut
Conselho = Comportamento de inserção na interceptação da seção
Pointcut = Pointcut para a seção
Advisor = Conselho + Pointcut
O Spring Cache também possui processos semelhantes aos outros AOPS
Crie um proxy de cache
Linha de interceptação do cache
O objeto de proxy de cache gerado no cache da mola usa a classe CacheProxyFactoryBean Factory. De um modo geral, a criação de proxy padrão na primavera é baseada no proxyfactorybean. Aqui, para lidar com mais convenientemente a lógica do cache, a Spring apresenta o CacheProxyFactoryBean para representar especificamente o proxy relacionado ao cache. O proxy do cache pode invadir objetos de destino singleton e proxy todas as interfaces implementadas pelos objetos de destino.
Como você pode ver, no CacheProxyFactoryBean, uma propriedade importante é o CacheInterceptor. Esta classe é uma classe de implementação do MethodInterceptor. A responsabilidade desta classe é executar operações específicas de cache no método de destino do objeto de destino, que é de responsabilidade dos conselhos mencionados acima.
Continue a seguir, o método de retorno Execute é o método na classe pai Cacheaspectsupport
Neste método, finalmente encontramos a lógica final do cache de operação
Resumir
O acima é o conteúdo inteiro deste artigo. Espero que o conteúdo deste artigo tenha certo valor de referência para o estudo ou trabalho de todos. Se você tiver alguma dúvida, pode deixar uma mensagem para se comunicar. Obrigado pelo seu apoio ao wulin.com.