Spring實戰之Cache

來源:互聯網
上載者:User

spring cache caching exception user aop

 

這裡假定我們已經有了一些現成的類和介面,比如說

1> 一個現成的User POJO對象

2> 一個UserDao介面和UserDaoHibernateImpl實作類別

3> 一個UserService介面和UserServiceImpl實作類別

 

 

1. 這是使用的是Maven做的專案管理工具,在使用cache(這裡使用的是ehcache)之前,需要引入以下依賴 [xhtml] view plain copy print ? <dependency>       <groupId>org.slf4j</groupId>       <artifactId>slf4j-api</artifactId>       <version>1.5.8</version>   </dependency>   <dependency>       <groupId>org.slf4j</groupId>       <artifactId>slf4j-jdk14</artifactId>       <version>1.5.8</version>   </dependency>   <dependency>       <groupId>net.sf.ehcache</groupId>       <artifactId>ehcache</artifactId>       <version>2.2.0</version>   </dependency>   <dependency>       <groupId>org.springmodules</groupId>       <artifactId>spring-modules-cache</artifactId>       <version>0.8</version>   </dependency>    

 

2. ehcache設定檔ehcache.xml [xhtml] view plain copy print ? <ehcache>       <defaultCache               maxElementsInMemory="500"               eternal="true"               overflowToDisk="false"               memoryStoreEvictionPolicy="LFU"/>              <cache name="userCache"               maxElementsInMemory="500"               eternal="true"               overflowToDisk="false"               memoryStoreEvictionPolicy="LFU"/>   </ehcache>    

 

 

3. spring設定檔 [xhtml] view plain copy print ? <?xml version="1.0" encoding="UTF-8"?>   <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:tx="http://www.springframework.org/schema/tx"          xmlns:ehcache="http://www.springmodules.org/schema/ehcache"          xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd          http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd          http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd          http://www.springmodules.org/schema/ehcache http://www.springmodules.org/schema/cache/springmodules-ehcache.xsd"          default-lazy-init="true">       <ehcache:config configLocation="classpath:test/ehcache.xml" />              <ehcache:proxy id="cachedUserService" refId="userService">           <ehcache:caching methodName="find*" cacheName="userCache"/>           <ehcache:caching methodName="list*" cacheName="userCache"/>           <ehcache:flushing methodName="add*" cacheNames="userCache" when="before" />           <ehcache:flushing methodName="update*" cacheNames="userCache" when="before" />           <ehcache:flushing methodName="delete*" cacheNames="userCache" when="before" />       </ehcache:proxy>       <bean id="userService" class="test.service.UserServiceImpl">           <property name="userDao" ref="userDao"/>       </bean>              <bean id="userDao" class="test.dao.UserDaoHibernateImpl">           <property name="sessionFactory" ref="mySessionFactory"/>       </bean>       <tx:advice id="txAdvice" transaction-manager="myTransactionManager">          <tx:attributes>               <tx:method name="get*" propagation="SUPPORTS" read-only="true"/>              <tx:method name="list*" propagation="SUPPORTS" read-only="true"/>              <tx:method name="find*" propagation="SUPPORTS" read-only="true"/>            <tx:method name="*" propagation="REQUIRED" />          </tx:attributes>        </tx:advice>        <aop:config>          <aop:pointcut id="userServiceOperation" expression="execution(* *..service.UserService.*(..))"/>          <aop:advisor advice-ref="txAdvice" pointcut-ref="userServiceOperation"/>        </aop:config>       <bean id="myTransactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">           <property name="sessionFactory" ref="mySessionFactory"/>       </bean>              <bean id="mySessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">           <property name="dataSource" ref="myDataSource"/>           <property name="mappingResources">               <list>                   <value>test/user.hbm.xml</value>               </list>           </property>           <property name="hibernateProperties">               <value>hibernate.dialect=org.hibernate.dialect.HSQLDialect</value>           </property>       </bean>       <bean id="myDataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">           <property name="driverClassName" value="org.hsqldb.jdbcDriver"/>           <property name="url" value="jdbc:hsqldb:res:hsqldb/testdb"/>           <property name="username" value="sa"/>           <property name="password" value=""/>       </bean>   </beans>    

 

這裡有幾個地方需要注意:

1> 命名空間ehcache

  xmlns:ehcache="http://www.springmodules.org/schema/ehcache"

  http://www.springmodules.org/schema/ehcache http://www.springmodules.org/schema/cache/springmodules-ehcache.xsd

2> 以下ehcache的配置項必須放在第一行,否則會拋出異常Unexpected exception parsing XML document from class path resource [org/garbagecan/springstudy/dao/hibernate/spring-cache.xml]; nested exception is java.lang.IllegalStateException: An implementation of CacheProviderFacade should be registered under the name 'cacheProvider' [xhtml] view

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.