posts - 22, comments - 32, trackbacks - 0, articles - 73
            BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理
          spring 3.0.5 發(fā)布后,公司使用Spring MVC +Hibernate 3.5 做項(xiàng)目,其中用到了緩存機(jī)制,spring 3.0.5 中ehcache配置方法很簡(jiǎn)單,其中緩存機(jī)制很細(xì)顆粒化,可以具體到把每個(gè)方式的返回值做緩存,好了不說廢話下面開始:

          需要JAR包:
          第一:spring 3.0.5 其中JAR;
          第二:另外需要增量JAR包(cglib-2.2.jar,ehcache-spring-annotations-1.1.2.jar)注意版本;

          其中applicationContext.xml 其中配置:
          <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xmlns:aop="http://www.springframework.org/schema/aop"
           xmlns:context="http://www.springframework.org/schema/context"
           xmlns:p="http://www.springframework.org/schema/p"
           xmlns:tx="http://www.springframework.org/schema/tx"
           xmlns:ehcache="http://ehcache-spring-annotations.googlecode.com/svn/schema/ehcache-spring"
           xsi:schemaLocation="http://www.springframework.org/schema/beans
            http://www.springframework.org/schema/beans/spring-beans.xsd
            http://www.springframework.org/schema/aop
            http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
            http://www.springframework.org/schema/context
            http://www.springframework.org/schema/context/spring-context-3.0.xsd
            http://www.springframework.org/schema/tx
            http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
            http://ehcache-spring-annotations.googlecode.com/svn/schema/ehcache-spring  
            http://ehcache-spring-annotations.googlecode.com/svn/schema/ehcache-spring/ehcache-spring-1.1.xsd">

          <ehcache:annotation-driven cache-manager="ehCacheManager" />
           
           <bean id="ehCacheManager" class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean"> 
                 <property name="configLocation" value="classpath:ehcache.xml" /> 
             </bean>

          加到你的文件中去,上邊是頭信息自己可以比照下,沒有的加進(jìn)去;


          在你的 src 目錄下新建ehcache.xml內(nèi)容如下:

          <?xml version="1.0" encoding="UTF-8"?>
          <ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:noNamespaceSchemaLocation="http://ehcache.org/ehcache.xsd"
           updateCheck="false">
           <diskStore path="java.io.tmpdir" />
           <defaultCache eternal="false"
             maxElementsInMemory="1000"
             overflowToDisk="false"
             diskPersistent="false"
             timeToIdleSeconds="0"
             timeToLiveSeconds="600"
             memoryStoreEvictionPolicy="LRU" />

           <cache name="departCache"
             eternal="false"
             maxElementsInMemory="100"
             overflowToDisk="false"
             diskPersistent="false"
             timeToIdleSeconds="0"
             timeToLiveSeconds="300"
             memoryStoreEvictionPolicy="LRU" />

          </ehcache>

          其中里邊詳細(xì)配置自己可以去上網(wǎng)搜下;

          這樣基本上配置完成了:

          DAO層緩存:例如下邊這個(gè)方法的返回值需要緩存:

          @SuppressWarnings("unchecked")
           //spring 3 基于注解ehcache緩存配置;
           @Cacheable(cacheName="departCache")
           public List<AppDepart> getChildDepart(Integer id) throws Exception {
            return  this.getHibernateTemplate().find("from AppDepart  where state=1 and idParent="+id);
           }
           
          @Cacheable(cacheName="departCache") 加上這句話,其中cacheName 對(duì)應(yīng)ehcache.xml  中的<cache name="departCache"

          這樣這個(gè)方法返回值就可以被緩存起來(lái)的了,但是怎么樣把緩存數(shù)據(jù)和數(shù)據(jù)庫(kù)中的數(shù)據(jù)實(shí)現(xiàn)同步呢?

          如果對(duì)這個(gè)PO做update ,save,delete 可以實(shí)現(xiàn)這樣策略如下:

          @Transactional(propagation = Propagation.REQUIRED)
           //設(shè)定spring的ecache緩存策略,當(dāng)編輯機(jī)構(gòu)時(shí)候,把緩存全部清除掉,以達(dá)到緩存那數(shù)據(jù)同步;
           @TriggersRemove(cacheName="departCache",removeAll=true)
           public boolean editDepart(String depno, String depName) {
            boolean flag = false;
            try {
             AppDepart depart = departDao.getAppdepart(depno);
             depart.setDepName(depName);
             departDao.update(depart);
             flag = true;
            } catch (Exception e) {
             e.printStackTrace();
            }
            return flag;
           }

          好了到此配置完畢,但是更加詳細(xì)緩存配置策略需要研究(例如:當(dāng)update數(shù)據(jù)時(shí)候,不全部清掉緩存,就可以達(dá)到與數(shù)據(jù)庫(kù)同步效果)
          以下配置經(jīng)本人完成測(cè)試通過(只限于本版本)。

                                       有問題請(qǐng)EMAIL:zzzlyr@163.com










          評(píng)論

          # re: Spring 3.0.5 MVC 基于注解ehcache.xml 配置方式  回復(fù)  更多評(píng)論   

          2015-03-24 11:17 by zuidaima
          java ehcache框架demo使用實(shí)例教程源代碼下載地址:http://zuidaima.com/share/kehcache-p1-s1.htm

          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 启东市| 凉城县| 靖宇县| 剑川县| 定西市| 郧西县| 勃利县| 岳阳市| 寿光市| 浦县| 安多县| 泰来县| 闸北区| 灵山县| 南澳县| 剑川县| 布尔津县| 海盐县| 三河市| 江西省| 开鲁县| 景东| 大理市| 东源县| 锡林浩特市| 建昌县| 银川市| 拉孜县| 阳西县| 依兰县| 介休市| 乐山市| 武夷山市| 宝坻区| 昌都县| 准格尔旗| 焦作市| 延庆县| 海伦市| 集贤县| 武陟县|