Intégration de la caféine et de la botte de printemps
La caféine est une version réécrite de Guava Cache à l'aide de Java 8, qui remplacera la goyave dans Spring Boot 2.0. Si la caféine apparaît, CaffeineCacheManager sera automatiquement configurée. Utilisez la propriété Spring.Cache.Cache-Names pour créer des caches au démarrage et peut être personnalisée (dans l'ordre) avec la configuration suivante:
Par exemple, la configuration suivante crée un cache Foo et Bar avec un nombre maximum de 500 et un temps de survie de 10 minutes:
spring.cache.cache-names = foo, barspring.cache.caffeine.spec = maximumSize = 500, expirafterAccess = 600s
De plus, si com.github.benmanes.caffeine.cache.cacheloader est défini, il sera automatiquement associé au CaffeineCacheManager. Étant donné que le Cacheloader associera tous les caches gérés par le gestionnaire de cache, il doit être défini comme cacheloader <objet, objet>, et que la configuration automatique ignorera tous les types génériques.
Introduire les dépendances
<dependency> <proupId> org.springframework.boot </proupId> <Artifactid> printemp-boot-starter-cache </retifactid> </ Dependency> <Dedency> <proupId> com.github.ben-manes.caffeine </prouprid> <etitaactid> caffeine </tatifactid> <version>> 2.6.0 <wero version> </Deference>
Activer le support Cache
Utilisez l'annotation @enablecaching pour permettre le support de cache
@ SpringbootApplication @ perturbercaching // Activer le cache, la classe publique spécifiée SpringbootStudentCacheCaffeineApplication {public static void main (String [] args) {SpringApplication.run (SpringbootStudEntCacheCaffeineApplication.Class, args); }}Fichier de configuration
Ajout de configurations spéciales pour le cache, telles que la capacité maximale, le temps d'expiration, etc.
spring.cache.cache-names = peuplespring.cache.caffeine.spec = initialCapacity = 50, maximumSize = 500, expirefterwrite = 10s, refreshafterwrite = 5s
Si une configuration de RefreshafterWrite est utilisée, un cacheloader doit également être spécifié, tel que:
/ ** * Ce bean doit être spécifié, et la propriété de configuration de RefreshafterWrite = 5s prendra effet * * @return * / @ beanpublic cacheloader <objet, objet> cacheLoader () {cacheloader <objet, objet> cacheloader = new cacheloder <objet, objet> () {@Override Public chargement (FORKET OBJECT (FORME IMPRODANT {OBJET; } // Réécrivez cette méthode et renvoyez la valeur OldValue, puis rafraîchissez le rechargement d'objet public cache @Override public (clé d'objet, objet OldValue) lève l'exception {return oldValue; }}; retourner cacheloader;}Instructions de configuration de la caféine:
Avis:
Exemple de code
/ ** * @author yuhao.wang * / @ ServicePublic Class PersonServiceIMPl implémente PersonService {private static final logger = loggerFactory.getLogger (PersonServiceImplL.class); @Autowired PersonPository PersonRepository; @Override @cacheput (value = "People", key = "# personne.id") Personne publique Save (personne personne) {personne p = personRepository.save (personne); Logger.info ("IS ID, clé:" + p.getID () + "Data Cached"); Retour p; } @Override @cacheevict (value = "People") // 2 public void retire (long id) {logger.info ("supprimer le cache de données avec id, key" + id + ""); // L'opération de suppression réelle n'est pas effectuée ici} / ** * Valeur cacheable *: cachez le préfixe de la clé. * Clé: suffixe de clé de cache. * Sync: Définissez si le cache expire, est-il nécessaire de ne placer qu'une seule demande pour demander la base de données, et d'autres demandes sont bloquées, et la valeur par défaut est fausse. * / @Override @Cacheable (value = "People", key = "# personne.id", sync = true) Public Person FindOne (personne personne, chaîne A, String [] b, list <long> c) {personne p = personRepostory.FindOne (personne.GetId ()); logger.info ("pour id, clé:" + p.getID () + "Les données sont mises en cache"); Retour p; } @Override @Cacheable (value = "People1") // 3 Personne publique FindOne1 () {Person P = PersonRepository.FindOne (2L); Logger.info ("pour ID, la clé est:" + p.getID () + "Les données sont mises en cache"); Retour p; } @Override @cacheable (value = "People2") // 3 Personne publique FindOne2 (personne personne) {personne p = personRepository.findOne (personne.getId ()); Logger.info ("pour ID, la clé est:" + p.getID () + "Les données sont mises en cache"); Retour p; }} Code source: https://github.com/wyh-spring-ecosystem-student/spring-boot-student/tree/releases
Ce qui précède est tout le contenu de cet article. J'espère que cela sera utile à l'apprentissage de tous et j'espère que tout le monde soutiendra davantage Wulin.com.