Ehcache는 빠르고 마른 기능을 갖춘 순수한 Java 상업용 캐싱 프레임 워크이며 최대 절전 모드의 기본 Cacheprovider입니다.
Ehcache는 주로 메모리 및 디스크 레벨로 나뉘어져있는 다양한 캐싱 전략을 제공하므로 용량 문제에 대해 걱정할 필요가 없습니다.
Spring-Boot는 새로운 스프링 애플리케이션의 초기 구성 및 개발 프로세스를 단순화하도록 설계된 빠른 통합 프레임 워크입니다. 이 프레임 워크는 특정 방법을 사용하여이를 구성하여 개발자가 더 이상 보일러 플레이트 구성을 정의 할 필요가 없습니다.
스프링 부팅에는 보일러 플레이트 구성 파일이 필요하지 않으므로 다른 프레임 워크를 통합 할 때 스프링 부팅이 약간 다릅니다.
1. Spring-Boot는 Maven을 통해 관리되는 JAR 패키지의 프레임 워크입니다. Ehcache를 통합하는 데 필요한 종속성은 다음과 같습니다
<pectionency> <groupid> org.springframework </groupid> <artifactid> spring-context-support </artifactid> </fectionency> <pectionency> <groupid> net.sf.ehcache </groupid> <artifactid> ehcache </artifactid> <버전> 2.8.3 </dependency>
특정 pom.xml 파일은 다음과 같습니다
<? xml version = "1.0"encoding = "utf-8"?> <project xmlns = "http://maven.apache.org/pom/4.0.0"xmlns : xsi = "http://www.w3.org/2001/xmlschema-instance" xsi : schemalocation = "http://maven.apache.org/pom/4.0.0 http://maven.apache.org/xsd/maven-4.0.xsd"> <modeversion> 4.0.0 </modelversion> <groupid> com.lclc.boot> <artifactid> pootifactid> <버전> 0.0.1-snapshot </version> <!-스프링 부츠에서 기본값을 상속합니다-> <부모> <groupid> org.springframework.boot </groupid> <tritifactid> spring-boot-starter-parent </artifactid> <berse> 1.3.3. Relaption> <pandenmencies> <groupid> org.springframework.boot </groupid> <artifactid> Spring-boot-starter-web </artifactid> </fectionement> <pectionement> <groupid> org.spramframewort.boot </groupid> <artifactid> spring-boot-starter-data-jpa </arepifactid> <GroupId> org.springframework.boot </groupid> <artifactid> Spring-Boot-Starter-Thymeleaf </atrifactid> </fectionement> <pectionement> <groupId> mySQL </groupId> <artifactID> mysql-connector-java </artifactid> <GroupId> <conciD> <artifactid> guava </artifactid> <bersion> 17.0 </version> </dependency> <pectionement> <groupid> org.sspringframework </groupid> <tructid> spring-context-support </arevactid> </dependency> <groupId> net.sf.ehcache </groupid> <아티 팩트> ehcache </artifactid> <bersion> 2.8.3 </version> </dependency> </dependence> <pectionemencement> <peencepencies> </dependencies> </fectencies> </fectionements> </dependencies> </feencementies> <plugins> <groupid> org.springframework.boot </groupid> <artifactid> spring-boot-maven-plugin </artifactid> </plugin> </build> </build> <repositories> <repository> <id> spring-snapshots </id> <url> http://repo.spridat.io/snapshot <snapshots> <enabled> true </enabled> </snapshots> </repository> <repository> <id> spring-milestones </id> http://repo.spring.io/milestone </url> </repository> </repository> <PluginPository> <fuglinRepository>>>>>>>>>>> <PluginPository <id> spring-snapshots </id> <url> http://repo.spring.io/snapshot </url> </leglinrepository> <fluginRepository> <id> spring-milestones </id> <url> http://repo.spring.io/milestone </url> </url> </pluginRepositories> </project>
2. ehcache를 사용하려면 일부 캐시 속성을 정의하려면 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 <diskstore path = "java.io.tmpdir /tmp_ehcache" /> <defaultCache Eternal = "false"maxelementsInmemory = "1000"OverFlowTodisk = "false"diskpersistent = "false"timetoidleSeconds = "0"timetoliveseconds = "600"moremorStoreEvicomicic = lru "600" 이름 = "데모"Eternal = "False"MaxelementsInmemory = "100"OverFlowTodisk = "False"DiskPersistent = "False"TimetoidleSeconds = "0"Timetoliveseconds = "300"MemoryStoreEvictionPolicy = "lru" /> < /ehcache>
이 XML 파일의 태그를 설명하십시오.
(1) .DiskStore : 캐시 경로, Ehcache는 메모리와 디스크의 두 가지 레벨로 나뉩니다. 이 속성은 디스크의 캐시 위치를 정의합니다. 매개 변수는 다음과 같이 설명됩니다.
user.home user home directory user.dir 사용자 현재 작업 디렉토리 java.io.tmpdir 기본 임시 파일 경로
(2) .DefaultCache : 기본 캐시 정책. ehcache가 정의 된 캐시를 찾을 수 없으면이 캐시 정책이 사용됩니다. 하나만 정의 할 수 있습니다.
(3) .cache : 사용자 정의 캐시 정책, 사용자 정의 캐시 정책. 매개 변수는 다음과 같이 설명됩니다.
캐시 요소의 속성 :
이름 : 캐시 이름
MaxelementsInMemory : 메모리에서 캐시 된 물체의 최대 수
MaxelementsOndisk : 하드 디스크에서 캐시 된 물체의 최대 수입니다. 0이라면 무한대를 의미합니다
Eternal : True는 대상이 만료되지 않는다는 것을 의미합니다. 현재 Timetoidleseconds 및 Timetoliveseconds 특성은 무시되고 기본값은 False입니다.
OverflowTodisk : True는 메모리에 캐시 된 객체의 수가 MaxelementsInMemory 한계에 도달하면 오버플로 된 객체가 하드 디스크 캐시에 기록됩니다. 참고 : 캐시 된 객체를 하드 디스크에 기록하려면 객체가 직렬화 가능한 인터페이스를 구현해야합니다.
Diskspoolbuffersizemb : 디스크 캐시 크기, 기본값은 30MB입니다. 각 캐시에는 자체 캐시 영역이 있어야합니다.
DiskPersistent : 데이터 중에 가상 머신 캐시를 캐시할지 여부
diskexpirythreadintervalseconds : 디스크 고장 스레드 실행 시간 간격, 기본값은 120 초입니다.
Timetoidleseconds : 몇 초 만에 물체를 유휴 상태로 유지하기 위해 최대 시간을 설정합니다. 마지막으로 객체에 액세스 한 경우, Timetoidleseconds 속성 값이 Timetoidleseconds 속성 값을 초과하면 객체가 만료되고 Ehcache가 캐시에서이를 지우게됩니다. 이 속성은 영원한 재산이 거짓 인 경우에만 유효합니다. 속성 값이 0 인 경우 객체가 무기한 유휴 상태 일 수 있음을 의미합니다.
Timetoliveseconds : 객체가 캐시에 몇 초만에 존재할 수있는 최대 시간을 설정합니다. 객체가 캐시에 저장된 경우 캐시의 시간이 Timetoliveseconds 속성 값을 초과하면 객체가 만료되고 ehcache가 캐시에서이를 지우게됩니다. 이 속성은 영원한 재산이 거짓 인 경우에만 유효합니다. 속성 값이 0 인 경우 캐시에 객체가 무기한으로 존재할 수 있음을 의미합니다. Timetoliveseconds는 이해하기 위해 Timetoidleseconds 속성보다 커야합니다.
MemoryStoreEvictionPolicy : MaxelementsInMemory 한계에 도달하면 EHCache가 지정된 정책에 따라 메모리를 정리합니다. 선택적 정책은 LRU (최근에 사용 된 최신, 기본 정책), FIFO (첫 번째, 첫 번째) 및 LFU (최소 방문 횟수)입니다.
3. Ehcache 관리자를 스프링 컨텍스트 컨테이너에 노출시킵니다.
@configuration // 주석이 캐시를 시작합니다 @enablecachingpublic class cacheconfiguration {/** ehcache main manager*/ @bean (name = "appehcachecacemanager") public ehcachecachemanager ehcachecachemanager (ehcachemanagerfactorybean bean) {new ehcachemanager (ehcachememanager); } / * * 공유 설정 여부에 따라 Spring은 각각 Cachemanager.create () 또는 New Cachemanager ()를 통해 Ehcache 기반을 만듭니다. */ @bean public ehcachemanagerfactorybean ehcachemanagerfactorybean () {ehcachemanagerfactorybean cachemanagerfactorybean = new ehcachemanagerFactoryBean (); CachemanagerFactoryBean.setConfigLocation (New ClassPathResource ( "conf/ehcache-app.xml"); CachemanagerFactoryBean.setShared (true); CachemanagerFactoryBean을 반환합니다. }}@Configuration : 주로 구성 클래스로 주석이 달린 스프링 부츠 용 주석이 달성되며 스캔에 우선 순위가 부여됩니다.
@Bean : 스프링 컨테이너에 콩을 추가하십시오.
모든 구성은 지금까지 수행되며 스프링 부팅을 통해 프레임 워크를 통합하는 것은 간단합니다.
4. Ehcache를 사용하십시오
ehcache를 사용하는 것은 주로 스프링 캐시 메커니즘을 통해 이루어집니다. Ehcache를 사용하여 스프링 캐시 메커니즘을 구현 했으므로 사용 측면에서 스프링 캐시 메커니즘을 완전히 사용할 수 있습니다.
몇 가지 메모가 관련되어 있습니다.
@Cachable : 메소드의 리턴 값을 캐시에 추가 할 책임자, 매개 변수 3
@cacheevict : 캐시를 지우는 책임, 매개 변수 4
매개 변수 설명 :
값 : 캐시 위치 이름은 비어있을 수 없습니다. ehcache를 사용하는 경우 ehcache.xml에 선언 된 캐시 이름입니다.
키 : 캐시 된 키, 기본값은 비어 있으므로 키로 사용되는 메소드의 매개 변수 유형과 매개 변수 값을 의미하며 SPEL을 지원합니다.
조건 : 트리거 조건, 조건이 충족 된 경우에만 캐시에 추가됩니다. 기본값이 비어 있으므로 모든 캐시에 추가되어 SPEL을 지원합니다.
Allentries : Cacheevict 매개 변수, True는 값의 모든 캐시를 지우는 것을 의미합니다. 기본값은 False입니다.
더 이상 고민하지 않고 코드를 업로드하기 만하면됩니다.
@ServicePublic Class CachedEmoserviceImpl은 캐시드 모시드를 구현합니다. {/** * 캐시 키 */public static final string thing_all_key = "/"thing_all/""; /*** 값 속성은 사용할 캐시 정책을 나타냅니다. 캐시 정책은 ehcache.xml */ public static final String demo_cache_name = "demo"에 있습니다. @cacheevict (value = demo_cache_name, key = the the _all_key) @override public void create (thing thing) {long id = getnextId (); thing.setid (id); data.put (id, thing); } @Cachable (value = demo_cache_name, key = "#the the thing.getId () + 'thing'") @override public things findById (long id) {system.err.println ( "캐시 없음!" + id); return data.get (id); } @Cachable (value = demo_cache_name, key = the _all_key) @override public list <TIP> findAll () {return lists.newArrayList (data.values ()); } @override @cacheput (value = demo_cache_name, key = "#the the the the the the the the the update (value = demo_cache_name, key = the _all_key) {value = demo_cache_name, key = the_all_key) {system.out.println (thing); data.put (thing.getid (), thing); 반환 일; } @cacheevict (value = demo_cache_name) @override public void delete (long id) {data.remove (id); }}5. 주석을 통해 서비스 계층 메소드에 주석을 달 필요 만 있으면 캐시를 사용하고 Cache를 Find **에 저장 한 다음 Delete ** 및 업데이트 **의 캐시를 지우십시오.
요약
위의 것은 Ehcache를 Ehcache를 통합하여 편집기가 도입 한 캐싱 메커니즘을 구현하는 방법입니다. 모든 사람에게 도움이되기를 바랍니다. 궁금한 점이 있으면 메시지를 남겨 주시면 편집자가 제 시간에 모든 사람에게 답장을 드리겠습니다. Wulin.com 웹 사이트를 지원해 주셔서 대단히 감사합니다!