1. 程式人生 > >springboot 整合 ehcache

springboot 整合 ehcache

1.pom檔案

<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>1.5.2.RELEASE</version>
	</parent>

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

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

		<!-- ehcache快取 -->
		<dependency>
			<groupId>net.sf.ehcache</groupId>
			<artifactId>ehcache</artifactId>
			<version>2.9.1</version><!--$NO-MVN-MAN-VER$ -->
		</dependency>
	</dependencies>

2./src/main/resouces/ehcache.xml

<?xml version="1.0" encoding="UTF-8"?>
<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:noNamespaceSchemaLocation="http://ehcache.org/ehcache.xsd">

  <!-- 磁碟快取位置 -->
  <diskStore path="d://ehcache"/>

  <!-- 預設快取 -->
  <defaultCache
          maxEntriesLocalHeap="10000"
          eternal="false"
          timeToIdleSeconds="120"
          timeToLiveSeconds="120"
          maxEntriesLocalDisk="10000000"
          diskExpiryThreadIntervalSeconds="120"
          memoryStoreEvictionPolicy="LRU">
    <persistence strategy="localTempSwap"/>
  </defaultCache>

  <!-- helloworld快取 -->
  <cache name="testcache"
         maxElementsInMemory="1000"
         eternal="false"
         timeToIdleSeconds="5"
         timeToLiveSeconds="5"
         overflowToDisk="false"
         memoryStoreEvictionPolicy="LRU"/>
</ehcache>

3.application.properties

spring.cache.ehcache.config=classpath:ehcache.xml

4.CacheService

package com.knife.EhcacheBoot;

import org.springframework.cache.annotation.CacheConfig;
import org.springframework.cache.annotation.CacheEvict;
import org.springframework.cache.annotation.CachePut;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Repository;

@Repository
@CacheConfig(cacheNames = {"testcache"})
public class CacheService {

	
	@Cacheable
    public String save(String typeId) {
        System.out.println("save()執行了=============");
        return "模擬資料庫儲存";
    }

    @CachePut
    public String update(String typeId) {
        System.out.println("update()執行了=============");
        return "模擬資料庫更新";
    }

    @CacheEvict
    public String delete(String typeId) {
        System.out.println("delete()執行了=============");
        return "模擬資料庫刪除";
    }

    @Cacheable
    public String select(String typeId) {
        System.out.println("select()執行了=============");
        return "模擬資料庫查詢";
    }
	
}

5.Controller

package com.knife.EhcacheBoot;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;


@Controller
public class CachController {

	@Autowired
    private CacheService service;

	@RequestMapping(value = { "tsave" })
	@ResponseBody
	public String tsave(String key) {

		return service.save(key);
		
	}

	@RequestMapping(value = { "tselect" })
	@ResponseBody
	public String tselect(String key) {

		return service.select(key);
		

	}
	
	@RequestMapping(value = { "tupdate" })
	@ResponseBody
	public String tupdate(String key) {

		return service.update(key);
		

	}
	
	@RequestMapping(value = { "tdelete" })
	@ResponseBody
	public String tdelete(String key) {

		return service.delete(key);
		

	}

}