国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - springboot集成spring cache緩存示例代碼

springboot集成spring cache緩存示例代碼

2020-09-22 10:41方志朋 Java教程

本篇文章主要介紹了springboot集成spring cache示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

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

聲明式緩存

Spring 定義 CacheManager 和 Cache 接口用來統(tǒng)一不同的緩存技術。例如 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)境依賴:

?
1
2
3
4
<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-cache</artifactId>
</dependency>

創(chuàng)建一個book數(shù)據(jù)訪問層

先創(chuàng)建一個實體類

?
1
2
3
4
5
6
7
8
9
10
11
12
13
public class Book {
 
private String isbn;
private String title;
 
public Book(String isbn, String title) {
 this.isbn = isbn;
 this.title = title;
}
….getter
….setter
 
}

創(chuàng)建一個數(shù)據(jù)訪問接口

?
1
2
3
4
5
public interface BookRepository {
 
 Book getByIsbn(String isbn);
 
}

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

實現(xiàn)接口類:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
@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);
  }
 }
 
}

測試類

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
@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"));
 }
 
}

啟動程序,你會發(fā)現(xiàn)程序在控制臺依次打印了:

?
1
2
3
4
5
6
7
2014-06-05 12:15:35.783 … : …. Fetching books
 
2014-06-05 12:15:40.783 … : isbn-1234 –> >Book{isbn='isbn-1234', id="codetool">

你會發(fā)現(xiàn)程序依次3s打印一行日志。這時還沒開啟緩存技術。

開啟緩存技術

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

?
1
2
3
4
5
6
7
8
@SpringBootApplication
@EnableCaching
public class DemoApplication {
 
 public static void main(String[] args) {
  SpringApplication.run(DemoApplication.class, args);
 }
}

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
@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);
  }
 }
 
}

這時再啟動程序,你會發(fā)現(xiàn)程序打印:

?

1
2
3
4
5
6
isbn-1234 –>Book{isbn='isbn-1234', id="codetool">

只有打印前面2個數(shù)據(jù),程序等了3s,之后的數(shù)據(jù)瞬間打印在控制臺上了,這說明緩存起了作用。

源碼下載:https://github.com/forezp/SpringBootLearning

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

原文鏈接:http://blog.csdn.net/forezp/article/details/71023614

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产精品高清一区二区 | 国产成人精品一区二区在线 | 国内精品视频在线观看 | 在线播放一区二区三区 | 成人免费网站 | 精品久久久一区 | 热久久国产 | 国产美女久久久 | 91cn国产在线 | 中文字幕精品一区二区三区精品 | 国产精品一二区 | 中文字幕精品一区二区精品 | 日韩免费 | 欧美日韩国产一区二区三区不卡 | 国产成人精品免高潮在线观看 | 国产精一区 | 国产免费高清 | 天天操导航 | 国产欧美高清在线观看 | 亚洲午夜电影 | 久久久一级片 | 国产一级在线观看 | 久久久久国产精品免费免费搜索 | 成人免费视频网站在线观看 | 久久久久成人精品 | 超碰成人在线免费 | 国产日韩精品在线观看 | 视频一区二区三区在线播放 | 国产精品美女视频 | 99草在线视频 | 欧美成年黄网站色视频 | 一区二区三区四区av | 看片久久 | 国产精品久久久久久久久免费 | 日韩av影片 | 国产精品免费观看 | 日韩视频一 | 亚洲免费不卡视频 | 日韩视频在线观看 | 91视视频在线观看入口直接观看 | 中文字幕成人在线 |