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는 메모리와 디스크의 두 가지 레벨로 나뉩니다. 이 속성은 디스크의 캐시 위치를 정의합니다. 매개 변수는 다음과 같이 설명됩니다.
(2) .DefaultCache : 기본 캐시 정책. ehcache가 정의 된 캐시를 찾을 수 없으면이 캐시 정책이 사용됩니다. 하나만 정의 할 수 있습니다.
(3) .cache : 사용자 정의 캐시 정책, 사용자 정의 캐시 정책. 매개 변수는 다음과 같이 설명됩니다.
SpringBoot는 많은 캐싱 방법을 지원합니다 : Redis, Guava, Ehcahe, Jcache 등.
Redis와 Ehcache의 차이점을 설명하십시오.
REDIS : 독립적 인 달리기 프로그램입니다. 단독으로 설치 한 후 Jedis를 Java를 사용하여 조작합니다. 독립적이기 때문에 단위 테스트 프로그램을 작성하고 데이터를 Redis에 넣은 다음 다른 프로그램을 작성하여 데이터를 얻으려면 데이터를 얻을 수 있습니다. ,,,
Ehcache : Redis와는 분명히 다르며 Java 프로그램에 묶여 있습니다. Java 프로그램이 살아 있으면 살아 있습니다. 예를 들어, 데이터를 넣기 위해 독립 프로그램을 작성한 다음 데이터를 얻기 위해 독립적 인 프로그램을 작성하면 데이터를 얻지 못합니다. 데이터는 독립 프로그램에서만 얻을 수 있습니다.
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
매개 변수 설명 :
더 이상 고민하지 않고 코드를 업로드하기 만하면됩니다.
@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 ** 및 업데이트 **의 캐시를 지우십시오.
캐시 주석에 대한 자세한 설명
@CacheConfig : 주로이 클래스에서 사용될 일부 일반적인 캐시 구성을 구성하는 데 사용됩니다. 여기 @cacheconfig (cachenames = "user") : 데이터 액세스 객체에 반환 된 컨텐츠는 사용자라는 캐시 객체에 저장되도록 구성됩니다. 또한이 주석을 사용하지 않고 @Cachable의 자체 캐시 세트 이름을 통해 직접 정의 할 수 있습니다.
@Cachable : 구성된 FindByName 함수의 리턴 값이 캐시에 추가됩니다. 동시에, 쿼리를 할 때, 먼저 캐시에서 얻을 수 있으며, 존재하지 않으면 데이터베이스에 대한 액세스가 시작됩니다. 이 주석에는 다음과 같은 매개 변수가 있습니다.
여기에 사용 된 두 가지 주석 외에도 다음과 같은 핵심 주석이 있습니다.
@Cacheput : 함수에서 구성되면 매개 변수에 따라 캐시 할 수 있으며 조건을 정의 할 수 있습니다. @Cachable과 달리 매번 기능을 호출하므로 주로 데이터 추가 및 수정 작업에 사용됩니다. 매개 변수는 @Cachable과 유사합니다. 특정 기능은 @Cachable 매개 변수의 위의 분석을 참조하십시오.
@cacheevict : 캐시에서 해당 데이터를 제거하기 위해 일반적으로 삭제 방법에 사용되는 함수에 구성되었습니다. @Cachable과 동일한 매개 변수 외에도 다음 두 매개 변수가 있습니다.
위는이 기사의 모든 내용입니다. 모든 사람의 학습에 도움이되기를 바랍니다. 모든 사람이 wulin.com을 더 지원하기를 바랍니다.