(十三)java版spring cloud+spring boot+redis社交电子商务平台-springboot集成spring cache...
電子商務(wù)社交平臺源碼請加企鵝求求:一零三八七七四六二六。本文介紹如何在springboot中使用默認的spring cache,
聲明式緩存
Spring 定義 CacheManager 和 Cache 接口用來統(tǒng)一不同的緩存技術(shù)。例如 JCache、 EhCache、 Hazelcast、 Guava、 Redis 等。在使用 Spring 集成 Cache 的時候,我們需要注冊實現(xiàn)的 CacheManager 的 Bean。
Spring Boot 為我們自動配置了 JcacheCacheConfiguration、 EhCacheCacheConfiguration、HazelcastCacheConfiguration、GuavaCacheConfiguration、RedisCacheConfiguration、SimpleCacheConfiguration 等。
默認使用 ConcurrenMapCacheManager
在我們不使用其他第三方緩存依賴的時候,springboot自動采用ConcurrenMapCacheManager作為緩存管理器。
環(huán)境依賴
在pom文件引入spring-boot-starter-cache環(huán)境依賴:
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-cache</artifactId> </dependency>復(fù)制代碼創(chuàng)建一個book數(shù)據(jù)訪問層
先創(chuàng)建一個實體類
public class Book {private String isbn; private String title;public Book(String isbn, String title) {this.isbn = isbn;this.title = title; } ….getter ….setter}復(fù)制代碼創(chuàng)建一個數(shù)據(jù)訪問接口
public interface BookRepository {Book getByIsbn(String isbn);}復(fù)制代碼這個你可以寫一個很復(fù)雜的數(shù)據(jù)查詢操作,比如操作mysql、nosql等等。為了演示這個栗子,我只做了一下線程的延遲操作,當(dāng)作是查詢數(shù)據(jù)庫的時間。
實現(xiàn)接口類:
@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);}}}復(fù)制代碼測試類
@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"));}}復(fù)制代碼啟動程序,你會發(fā)現(xiàn)程序在控制臺依次打印了:
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’}復(fù)制代碼你會發(fā)現(xiàn)程序依次3s打印一行日志。這時還沒開啟緩存技術(shù)。
開啟緩存技術(shù)
在程序的入口中加入@ EnableCaching開啟緩存技術(shù):
@SpringBootApplication @EnableCaching public class DemoApplication {public static void main(String[] args) {SpringApplication.run(DemoApplication.class, args);} }復(fù)制代碼在需要緩存的地方加入@Cacheable注解,比如在getByIsbn()方法上加入@Cacheable(“books”),這個方法就開啟了緩存策略,當(dāng)緩存有這個數(shù)據(jù)的時候,會直接返回數(shù)據(jù),不會等待去查詢數(shù)據(jù)庫。
@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);}}}復(fù)制代碼Spring Cloud大型企業(yè)分布式微服務(wù)云構(gòu)建的B2B2C電子商務(wù)平臺源碼請加企鵝求求:一零三八七七四六二六
轉(zhuǎn)載于:https://juejin.im/post/5cde718ff265da1bd260b9df
總結(jié)
以上是生活随笔為你收集整理的(十三)java版spring cloud+spring boot+redis社交电子商务平台-springboot集成spring cache...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 前端架构设计1:代码核心
- 下一篇: 洛谷P4238 【模板】多项式求逆(NT