成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

springboot如何集成springcache

這篇文章給大家分享的是有關(guān)springboot如何集成spring cache的內(nèi)容。小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過來看看吧。

創(chuàng)新互聯(lián)服務(wù)項(xiàng)目包括嵊泗網(wǎng)站建設(shè)、嵊泗網(wǎng)站制作、嵊泗網(wǎng)頁(yè)制作以及嵊泗網(wǎng)絡(luò)營(yíng)銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢(shì)、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,嵊泗網(wǎng)站推廣取得了明顯的社會(huì)效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到嵊泗省份的部分城市,未來相信會(huì)繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!

聲明式緩存

Spring 定義 CacheManager 和 Cache 接口用來統(tǒng)一不同的緩存技術(shù)。例如 JCache、 EhCache、 Hazelcast、 Guava、 redis 等。在使用 Spring 集成 Cache 的時(shí)候,我們需要注冊(cè)實(shí)現(xiàn)的 CacheManager 的 Bean。

Spring Boot 為我們自動(dòng)配置了 JcacheCacheConfiguration、 EhCacheCacheConfiguration、HazelcastCacheConfiguration、GuavaCacheConfiguration、RedisCacheConfiguration、SimpleCacheConfiguration 等。

默認(rèn)使用 ConcurrenMapCacheManager

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

環(huán)境依賴

在pom文件引入spring-boot-starter-cache環(huán)境依賴:

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-cache</artifactId>
</dependency>

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

先創(chuàng)建一個(gè)實(shí)體類

 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)建一個(gè)數(shù)據(jù)訪問接口

public interface BookRepository {

    Book getByIsbn(String isbn);

}

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

實(shí)現(xiàn)接口類:

@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);
        }
    }

}

測(cè)試類

@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òng)程序,你會(huì)發(fā)現(xiàn)程序在控制臺(tái)依次打印了:

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’}

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

開啟緩存技術(shù)

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

@SpringBootApplication
@EnableCaching
public class DemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }
}

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

@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);
        }
    }

}

這時(shí)再啟動(dòng)程序,你會(huì)發(fā)現(xiàn)程序打印:

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個(gè)數(shù)據(jù),程序等了3s,之后的數(shù)據(jù)瞬間打印在控制臺(tái)上了,這說明緩存起了作用。

感謝各位的閱讀!關(guān)于“springboot如何集成spring cache”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí),如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!

網(wǎng)頁(yè)標(biāo)題:springboot如何集成springcache
轉(zhuǎn)載來源:http://jinyejixie.com/article14/pggcde.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供移動(dòng)網(wǎng)站建設(shè)、、網(wǎng)站排名、外貿(mào)建站、網(wǎng)站設(shè)計(jì)、小程序開發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

手機(jī)網(wǎng)站建設(shè)
精河县| 清徐县| 赤壁市| 海兴县| 红安县| 建始县| 新宁县| 郎溪县| 永城市| 巢湖市| 海兴县| 京山县| 大安市| 边坝县| 长春市| 镇康县| 高碑店市| 宜兴市| 清镇市| 慈溪市| 石渠县| 遂川县| 绥江县| 绿春县| 静海县| 洮南市| 柳河县| 秦皇岛市| 姜堰市| 张家口市| 涟水县| 山阴县| 甘德县| 黑水县| 横峰县| 廊坊市| 会宁县| 年辖:市辖区| 平度市| 澜沧| 大理市|