日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java版spring cloud+spring boot+redis多租户社交电子商务平台 (十三)springboot集成spring cache...

發布時間:2023/12/9 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java版spring cloud+spring boot+redis多租户社交电子商务平台 (十三)springboot集成spring cache... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

電子商務社交平臺源碼請加企鵝求求:三五三六二四七二五九

本文介紹如何在springboot中使用默認的spring cache,

聲明式緩存

Spring 定義 CacheManager 和 Cache 接口用來統一不同的緩存技術。例如 JCache、 EhCache、 Hazelcast、 Guava、 Redis 等。在使用 Spring 集成 Cache 的時候,我們需要注冊實現的 CacheManager 的 Bean。

Spring Boot 為我們自動配置了 JcacheCacheConfiguration、 EhCacheCacheConfiguration、HazelcastCacheConfiguration、GuavaCacheConfiguration、RedisCacheConfiguration、SimpleCacheConfiguration 等。

默認使用 ConcurrenMapCacheManager

在我們不使用其他第三方緩存依賴的時候,springboot自動采用ConcurrenMapCacheManager作為緩存管理器。

環境依賴

在pom文件引入spring-boot-starter-cache環境依賴:

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-cache</artifactId> </dependency> 復制代碼

創建一個book數據訪問層

先創建一個實體類

public class Book {private String isbn; private String title;public Book(String isbn, String title) {this.isbn = isbn;this.title = title; } ….getter ….setter} 復制代碼

創建一個數據訪問接口

public interface BookRepository {Book getByIsbn(String isbn);}復制代碼

這個你可以寫一個很復雜的數據查詢操作,比如操作mysql、nosql等等。為了演示這個栗子,我只做了一下線程的延遲操作,當作是查詢數據庫的時間。

實現接口類:

@Component public class SimpleBookRepository implements BookRepository {@Overridepublic Book getByIsbn(String isbn) {simulateSlowService();return new Book(isbn, "Some book");}// Don't do this at homeprivate void simulateSlowService() {try {long time = 3000L;Thread.sleep(time);} catch (InterruptedException e) {throw new IllegalStateException(e);}}}復制代碼

測試類

@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;}@Overridepublic 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"));}}復制代碼

啟動程序,你會發現程序在控制臺依次打印了:

2014-06-05 12:15:35.783 … : …. Fetching books2014-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’}復制代碼

你會發現程序依次3s打印一行日志。這時還沒開啟緩存技術。

開啟緩存技術

在程序的入口中加入@ EnableCaching開啟緩存技術:

@SpringBootApplication @EnableCaching public class DemoApplication {public static void main(String[] args) {SpringApplication.run(DemoApplication.class, args);} }復制代碼

在需要緩存的地方加入@Cacheable注解,比如在getByIsbn()方法上加入@Cacheable(“books”),這個方法就開啟了緩存策略,當緩存有這個數據的時候,會直接返回數據,不會等待去查詢數據庫。

@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 homeprivate void simulateSlowService() {try {long time = 3000L;Thread.sleep(time);} catch (InterruptedException e) {throw new IllegalStateException(e);}}}復制代碼

這時再啟動程序,你會發現程序打印:

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’}復制代碼

只有打印前面2個數據,程序等了3s,之后的數據瞬間打印在控制臺上了,這說明緩存起了作用。
電子商務社交平臺源碼請加企鵝求求:三五三六二四七二五九

轉載于:https://juejin.im/post/5cf8e6346fb9a07f03572b54

總結

以上是生活随笔為你收集整理的java版spring cloud+spring boot+redis多租户社交电子商务平台 (十三)springboot集成spring cache...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。