Cet article présente principalement l'exemple de code du cache spring intégré de springboot. L'éditeur pense qu'il est plutôt bon. Maintenant, je vais le partager avec vous et le donner comme référence. Suivons l'éditeur et jetons un coup d'œil
Cet article présente comment utiliser le cache Spring par défaut dans Springboot,
Cache déclaratif
Spring définit CacheManager L'interface Cache est utilisée pour unifier différentes technologies de mise en cache. Par exemple, JCache, EhCache, Hazelcast, Guava, Redis, etc. Lorsque nous utilisons Spring pour intégrer Cache, nous devons enregistrer le bean du CacheManager implémenté.
Spring Boot configure automatiquement JcacheCacheConfiguration, EhCacheCacheConfiguration, HazelcastCacheConfiguration, GuavaCacheConfiguration, RedisCacheConfiguration, SimpleCacheConfiguration, etc.
ConcurrenMapCacheManager est utilisé par défaut
Lorsque nous n'utilisons pas d'autres dépendances de cache tierces, Springboot utilise automatiquement ConcurrenMapCacheManager comme gestionnaire de cache.
Dépendances de l'environnement
Introduire les dépendances de l'environnement spring-boot-starter-cache dans le fichier pom :
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-cache</artifactId> </dependency>
Créez une couche d'accès aux données du livre
Créez d'abord une classe d'entité
public class Book { private String isbn; private String title; public Book(String isbn, String title) { this.isbn = isbn; this.title = title; } ….getter ….setter }
Créez une interface d'accès aux données
public interface BookRepository { Book getByIsbn(String isbn); }
Vous pouvez écrire une opération de requêtede données très complexe, comme l'opérationMySQL, nosql, etc. Afin de démontrer cette châtaigne, j'ai uniquement effectué une opération de retard sur le thread et l'ai considéré comme le temps d'interroger la base de données.
Implémenter la classe d'interface :
@Component public class SimpleBookRepository implements BookRepository { @Override public Book getByIsbn(String isbn) { simulateSlowService(); return new Book(isbn, "Some book"); } // Don't do this at home private void simulateSlowService() { try { long time = 3000L; Thread.sleep(time); } catch (InterruptedException e) { throw new IllegalStateException(e); } } }
Classe de test
@Component public class AppRunner implements CommandLineRunner { private static final Logger logger = LoggerFactory.getLogger(AppRunner.class); private final BookRepository bookRepository; public AppRunner(BookRepository bookRepository) { this.bookRepository = bookRepository; } @Override public void run(String... args) throws Exception { logger.info(".... Fetching books"); logger.info("isbn-1234 -->" + bookRepository.getByIsbn("isbn-1234")); logger.info("isbn-4567 -->" + bookRepository.getByIsbn("isbn-4567")); logger.info("isbn-1234 -->" + bookRepository.getByIsbn("isbn-1234")); logger.info("isbn-4567 -->" + bookRepository.getByIsbn("isbn-4567")); logger.info("isbn-1234 -->" + bookRepository.getByIsbn("isbn-1234")); logger.info("isbn-1234 -->" + bookRepository.getByIsbn("isbn-1234")); } }
Démarrer le programme , vous constaterez que le programme imprime en séquence sur la console :
2014-06-05 12:15:35.783 … : …. Fetching books 2014-06-05 12:15:40.783 … : isbn-1234 –> >Book{isbn='isbn-1234', title='Some book'} 2014-06-05 12:15:43.784 … : isbn-1234 –>Book{isbn='isbn-1234', title='Some book'} 2014-06-05 12:15:46.786 … : isbn-1234 –>Book{isbn='isbn-1234', title='Some book'}
Vous constaterez que le programme imprime une ligne de connexion en séquence pendant 3 secondes. La technologie de mise en cache n’est pas activée pour le moment.
Activer la technologie de mise en cache
Ajoutez @EnableCaching à l'entrée du programme pour activer la technologie de mise en cache :
@SpringBootApplication @EnableCaching public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } }
Ajoutez l'annotation @Cacheable là où la mise en cache est requise, par exemple en ajoutant @Cacheable("books") à la méthode getByIsbn(). Cette méthode active la stratégie de mise en cache Lorsque le cache contient ces données, les données seront renvoyées. directement. Non En attente d'interrogation de la base de données.
@Component public class SimpleBookRepository implements BookRepository { @Override @Cacheable("books") public Book getByIsbn(String isbn) { simulateSlowService(); return new Book(isbn, "Some book"); } // Don't do this at home private void simulateSlowService() { try { long time = 3000L; Thread.sleep(time); } catch (InterruptedException e) { throw new IllegalStateException(e); } } }
Démarrez à nouveau le programme et vous constaterez que le programme imprime :
isbn-1234 –>Book{isbn='isbn-1234', title='Some book'} 2017-04-23 18:17:09.479 INFO 8054 — [ main] forezp.AppRunner : isbn-4567 –>Book{isbn='isbn-4567', title='Some book'} 2017-04-23 18:17:09.480 INFO 8054 — [ main] forezp.AppRunner : isbn-1234 –>Book{isbn='isbn-1234', title='Some book'} 2017-04-23 18:17:09.480 INFO 8054 — [ main] forezp.AppRunner : isbn-4567 –>Book{isbn='isbn-4567', title='Some book'} 2017-04-23 18:17:09.481 INFO 8054 — [ main] forezp.AppRunner : isbn-1234 –>Book{isbn='isbn-1234', title='Some book'} 2017-04-23 18:17:09.481 INFO 8054 — [ main] forezp.AppRunner : isbn-1234 –>Book{isbn='isbn-1234', title='Some book'}
Uniquement print Pour les deux premières données, le programme a attendu 3 secondes et les données suivantes ont été instantanément imprimées sur la console, ce qui montre que le cache fonctionne.
【Recommandations associées】
1. Recommandation spéciale : "php Programmer Toolbox" version V0.1 Télécharger
2. Tutoriel vidéo Java gratuit
3 Tutoriel vidéo Java de la Geek Academy
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!