SpringBoot2.0 Ehcacheフレームワークの統合
MAVEN環境
注記の追加:@EnableCaching ehcacheキャッシュモードをオンにする
@Cacheable注記を追加したメソッドは、キャッシュ可能であることを示します.
@CacheConfigはキャッシュ構成の作成を示し、KeyはuserCache
app1_ehcache.xml
app2_ehcache.xml
1.diskStore:データ(.data and.index)の格納場所を指定し、ディスク内のフォルダの位置期間The diskStore element is optionalを指定することができる.It must be configured if you have overflowToDisk or diskPersistent enabled for any cache. If it is not configured, a warning will be issues and java.io.tmpdir will be used.
2、defaultCache:デフォルトの管理ポリシー
EhcacheがMap集合を用いて実現したelementは実はkeyとvalueである.
一、以下の属性は必須です.
1、name:Cacheの名前は、唯一でなければなりません(ehcacheはこのcacheをHashMapに入れます).
2、maxElementsInMemory:メモリにキャッシュされたelementの最大数.
3、maxElementsOnDisk:ディスクにキャッシュされているelementの最大数.デフォルト値は0で、制限されていないことを示します.
4、eternal:キャッシュされたelementsがいつまでも期限切れにならないかを設定します.trueの場合、キャッシュされたデータは常に有効であり、falseの場合、timeToIdleSeconds、timeToLiveSecondsに基づいて判断されます.
5、overflowToDisk:メモリ内のデータがメモリ制限を超えた場合、ディスクにキャッシュするかどうか.
二、以下の属性はオプションです.
1、timeToIdleSeconds:オブジェクトの空き時間とは、オブジェクトがどのくらいアクセスされていないかで失効することを意味します.eternalがfalseである場合にのみ有効です.デフォルト値0は、常にアクセス可能であることを示します.
2、timeToLiveSeconds:オブジェクトの生存時間.オブジェクトの作成から失効までの時間を指す.eternalがfalseである場合にのみ有効です.デフォルト値0は、常にアクセス可能であることを示します.
3、diskPersistent:ディスク上で永続化するかどうか.jvmを再起動した後、データが有効かどうかを指します.デフォルトはfalseです.
4、diskExpiryThreadIntervalSeconds:オブジェクト検出スレッド実行間隔.オブジェクトのステータスを識別するスレッドは、どれくらいの時間に1回実行されますか.
5、diskSpoolBufferSizeMB:DiskStoreが使用するディスクサイズ、デフォルト値30 MB.各cacheは、それぞれのDiskStoreを使用します.
6.memoryStoreEveictionPolicy:メモリ内のデータがメモリ制限を超えた場合、ディスクにキャッシュする際のポリシー.デフォルト値LRU、オプションFIFO、LFU.
org.springframework.boot
spring-boot-starter-parent
2.0.0.RELEASE
org.projectlombok
lombok
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-starter-tomcat
org.apache.tomcat.embed
tomcat-embed-jasper
org.springframework.boot
spring-boot-starter-log4j
1.3.8.RELEASE
org.springframework.boot
spring-boot-starter-aop
commons-lang
commons-lang
2.6
org.apache.httpcomponents
httpclient
com.alibaba
fastjson
1.2.47
javax.servlet
jstl
taglibs
standard
1.1.2
org.springframework.boot
spring-boot-starter-cache
net.sf.ehcache
ehcache
2.9.1
org.mybatis.spring.boot
mybatis-spring-boot-starter
1.1.1
mysql
mysql-connector-java
YMLプロファイル情報
###
server:
port: 8081
###
spring:
datasource:
url: jdbc:mysql://localhost:3306/test
username: root
password: root
driver-class-name: com.mysql.jdbc.Driver
test-while-idle: true
test-on-borrow: true
validation-query: SELECT 1 FROM DUAL
time-between-eviction-runs-millis: 300000
min-evictable-idle-time-millis: 1800000
#
cache:
type: ehcache
ehcache:
config: classpath:app2_ehcache.xml
App起動方式
注記の追加:@EnableCaching ehcacheキャッシュモードをオンにする
@MapperScan(basePackages = { "com.itmayiedu.mapper" })
@EnableCaching
@SpringBootApplication
public class App {
public static void main(String[] args) {
SpringApplication.run(App.class, args);
}
}
プロジェクトの使用
@Cacheable注記を追加したメソッドは、キャッシュ可能であることを示します.
@CacheConfigはキャッシュ構成の作成を示し、KeyはuserCache
@CacheConfig(cacheNames = "userCache")
public interface UserMapper {
@Select("SELECT ID ,NAME,AGE FROM users where id=#{id}")
@Cacheable
List getUser(@Param("id") Long id);
}
EhCache構成
app1_ehcache.xml
app2_ehcache.xml
キャッシュのクリア
@Autowired
private CacheManager cacheManager; // EHCache
@RequestMapping("/remoKey")
public void remoKey() {
cacheManager.getCache("userCache").clear(); //
}
パラメータ関連構成
1.diskStore:データ(.data and.index)の格納場所を指定し、ディスク内のフォルダの位置期間The diskStore element is optionalを指定することができる.It must be configured if you have overflowToDisk or diskPersistent enabled for any cache. If it is not configured, a warning will be issues and java.io.tmpdir will be used.
2、defaultCache:デフォルトの管理ポリシー
EhcacheがMap集合を用いて実現したelementは実はkeyとvalueである.
一、以下の属性は必須です.
1、name:Cacheの名前は、唯一でなければなりません(ehcacheはこのcacheをHashMapに入れます).
2、maxElementsInMemory:メモリにキャッシュされたelementの最大数.
3、maxElementsOnDisk:ディスクにキャッシュされているelementの最大数.デフォルト値は0で、制限されていないことを示します.
4、eternal:キャッシュされたelementsがいつまでも期限切れにならないかを設定します.trueの場合、キャッシュされたデータは常に有効であり、falseの場合、timeToIdleSeconds、timeToLiveSecondsに基づいて判断されます.
5、overflowToDisk:メモリ内のデータがメモリ制限を超えた場合、ディスクにキャッシュするかどうか.
二、以下の属性はオプションです.
1、timeToIdleSeconds:オブジェクトの空き時間とは、オブジェクトがどのくらいアクセスされていないかで失効することを意味します.eternalがfalseである場合にのみ有効です.デフォルト値0は、常にアクセス可能であることを示します.
2、timeToLiveSeconds:オブジェクトの生存時間.オブジェクトの作成から失効までの時間を指す.eternalがfalseである場合にのみ有効です.デフォルト値0は、常にアクセス可能であることを示します.
3、diskPersistent:ディスク上で永続化するかどうか.jvmを再起動した後、データが有効かどうかを指します.デフォルトはfalseです.
4、diskExpiryThreadIntervalSeconds:オブジェクト検出スレッド実行間隔.オブジェクトのステータスを識別するスレッドは、どれくらいの時間に1回実行されますか.
5、diskSpoolBufferSizeMB:DiskStoreが使用するディスクサイズ、デフォルト値30 MB.各cacheは、それぞれのDiskStoreを使用します.
6.memoryStoreEveictionPolicy:メモリ内のデータがメモリ制限を超えた場合、ディスクにキャッシュする際のポリシー.デフォルト値LRU、オプションFIFO、LFU.