Concept de cache de printemps
À partir du printemps 3.1, un moyen transparent d'ajouter du cache aux applications de ressort existants est fourni, qui est utilisé comme @transaction. Il existe une couche d'abstraction entre le niveau d'application et le stockage du backend. Cette couche d'abstraction est conçue pour encapsuler divers stockages de backend enfichables (ehcache goyava redis) afin de minimiser l'intrusion causée par le cache au code commercial existant.
La technologie de mise en cache de Spring a également une flexibilité considérable. Non seulement il peut utiliser Spel (Spring Expression Language) pour définir les clés de cache et diverses conditions, mais il fournit également des solutions de stockage temporaires de cache prête à l'emploi, et prend également en charge l'intégration avec des caches professionnels traditionnels tels que ehcache.
Ses caractéristiques sont résumées comme suit:
Concept de conception
Tout comme les autres services du framework Spring, Spring Cache fournit d'abord une couche d'abstraction, et l'abstraction centrale se reflète principalement dans les deux interfaces.
org.springframework.cache.cache
org.springframework.cache.CacheManager
Cache signifie Cache lui-même
CacheManager représente le traitement et la gestion des caches, etc. La signification de l'abstraction est de bloquer les différences de détails de mise en œuvre et de fournir une évolutivité. Cette couche d'abstraction du cache découple l'utilisation du cache et le stockage arrière du cache, afin que le stockage arrière puisse être remplacé facilement à l'avenir.
Utilisation du cache de ressort en trois étapes:
Déclarer le cache
@Cacheable ("Books") Public Book Findbook (ISBN ISBN) {...} L'utilisation est très simple. Ajoutez @Cacheable et d'autres annotations à la méthode pour mettre en cache le résultat de la méthode.
Lorsqu'une méthode est appelée, vérifiez d'abord s'il y a un appel au même paramètre dans le cache pour la méthode. Si c'est le cas, interrogez le cache et renvoyez le résultat. Sinon, exécutez la logique de méthode spécifique et cachez le résultat au cache. Bien sûr, cette série de logique est transparente pour l'appelant. Les notes pour les autres opérations de cache sont les suivantes (voir la documentation officielle pour plus de détails):
Allumez le support de cache de printemps
<cache: annotation-axé />
Ou utilisez la méthode d'annotation @enablecaching
Configurer le stockage du cache backend
Spring Cache fournit plusieurs implémentations de stockage backend intégré: voici les implémentations spécifiques de CacheManager.
De plus, les données de printemps fournissent deux gestionnaires de cache:
Si vous utilisez des caches distribuées telles que Memcached ou Redis, vous pouvez implémenter Cache et CacheManager vous-même et le déclarer dans le contexte. Si plusieurs implémentations de cache différentes sont nécessaires, divers cache -mangers peuvent être encapsulés ensemble en mode combinaison.
Comment la clé cachée est-elle générée
Nous savons tous que la méthode de stockage du cache est généralement la valeur clé. Donc, dans le cache de printemps, comment est l'ensemble de clés? Ici, nous devons introduire KeyGenerator, qui est responsable de la stratégie de génération de clés, et la valeur par défaut est d'utiliser SimpleKeyGenerator
On peut voir qu'il s'agit de la valeur de hachage du tableau des paramètres ordonnée. Bien sûr, les utilisateurs peuvent personnaliser la stratégie de génération de clés.
Implémentation du cache de printemps
Ce qui précède est l'utilisation générale du cache de printemps, qui montre comment le printemps est implémenté.
Lors de l'apprentissage du code source de printemps, il y a deux choses à retenir:
N'oubliez pas ceux-ci et il est plus facile de comprendre le mécanisme de mise en œuvre et d'exécution de certains composants au printemps.
Le cache de printemps ne fait pas exception. Il s'agit d'une implémentation Spring AOP typique. Au printemps, AOP peut être simplement comprise comme un proxy (sauf aspectj). Nous déclarons que la classe de la méthode @cacheable sera proxy et dans le proxy, les opérations de requête en cache et de définition sont implémentées.
Création d'une infrastructure de cache
L'article précédent (aperçu du module Spring AOP) a parlé du fait que le processus de création de Spring AOP vise essentiellement à implémenter un prestation de beanPost, créer un proxy dans le processus de création d'un haricot et de lier tous les conseillers applicables au bean pour le proxy et, finalement, l'expose au récipient.
Plusieurs concepts clés de l'AOP Master in Spring Advisor Advice Pointcut
Conseils = Comportement de l'insertion dans l'interception de la section
Pointcut = Pointcut à la section
Advisor = Conseil + Pointcut
Le cache de printemps a également des processus similaires à ceux des autres AOP
Créer un proxy de cache
Ligne d'interception de Cache
L'objet proxy Cache généré dans le cache Spring utilise la classe d'usine CacheProxyFactoryBean. D'une manière générale, la création d'un proxy standard au printemps est basée sur ProxyfactoryBean. Ici, afin de gérer plus facilement la logique de cache, Spring introduit CacheproxyfactoryBean pour représenter spécifiquement le proxy lié au cache. Cache Proxy peut enrouler les objets cibles Singleton et proxy toutes les interfaces implémentées par les objets cibles.
Comme vous pouvez le voir, dans le CacheproxyfactoryBean, une propriété importante est CacheInterceptor. Cette classe est une classe d'implémentation de MethodInterceptor. La responsabilité de cette classe est d'effectuer des opérations de cache spécifiques sur la méthode cible cible cible cible, qui est la responsabilité des conseils mentionnés ci-dessus.
Continuez à suivre, la méthode d'exécution de rendement est la méthode de la classe parent CacheSpectsupport
Dans cette méthode, nous trouvons enfin la logique finale du cache d'opération
Résumer
Ce qui précède est l'intégralité du contenu de cet article. J'espère que le contenu de cet article a une certaine valeur de référence pour l'étude ou le travail de chacun. Si vous avez des questions, vous pouvez laisser un message pour communiquer. Merci pour votre soutien à wulin.com.