zoukankan      html  css  js  c++  java
  • 介绍 Spring 3.1 M1 中的缓存功能

    Spring 3.1 提供了对已有的 Spring 应用增加缓存的支持,这个特性对应用本身来说是透明的,通过缓存抽象层,使得对已有代码的影响降低到最小。

    该缓存机制针对于 Java 的方法,通过给定的一些参数来检查方法是否已经执行,Spring 将对执行结果进行缓存,而无需再次执行方法。

    可通过下列配置来启用缓存的支持(注意使用新的schema):

    <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xmlns:cache="http://www.springframework.org/schema/cache"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
            http://www.springframework.org/schema/cache http://www.springframework.org/schema/cache/spring-cache.xsd">
     
      <cache:annotation-driven />
      ...
    </beans>

    接下来可使用 @Cacheable 和 @CacheEvict 来对缓存进行操作。

    @Cacheable("persons")
    public Person profile(Long personId) { ... }

    以上代码声明了一个名为 persons 的缓存区域,当调用该方法时,Spring 会检查缓存中是否存在 personId 对应的值。

    也可以指定多个缓存区域,当你在应用有需要这样做的话:

    @Cacheable({"persons", "profiles"})
    public Person profile(Long personId) { ... }

    当指定多个区域时,Spring 会一个个的检查,一旦某个区域存在指定值时则返回。

    而 @CacheEvict 则用来从缓存中清除数据,例如:

    @CacheEvict (value = "persons", allEntries=true)
    public List<Person> listPersons()

    @CacheEvict 可以指定清除缓存的条件。

    还可以指定缓存的Key:

    @Cacheable(value="persons", key="personId")
    public Person profile(Long personId, Long groundId) { ... }

    或者根据条件决定是否缓存:

    @Cacheable(value="persons", condition="personId > 50")
    public Person profile(Long personId) { ... }

    缓存管理器的配置:

    <!-- generic cache manager -->
    <bean id="cacheManager" class="org.springframework.cache.support.SimpleCacheManager">
      <property name="caches">
        <set>
          <bean class="org.springframework.cache.concurrent.ConcurrentCacheFactoryBean" p:name="default"/>
          <bean class="org.springframework.cache.concurrent.ConcurrentCacheFactoryBean" p:name="persons"/>
        </set>
      </property>
    </bean>

    基于 Ehcache 缓存的配置:

    <bean id="cacheManager" class="org.springframework.cache.ehcache.EhcacheCacheManager" p:cache-manager="ehcache"/>
     
    <!-- Ehcache library setup -->
    <bean id="ehcache" class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean" p:config-location="ehcache.xml"/>

    如果你看不懂上面的内容,那请看 洋文版 或者

    官方文档:http://static.springsource.org/spring/docs/3.1.0.M1/spring-framework-reference/html/cache.html

  • 相关阅读:
    HDOJ 1846 Brave Game
    并查集模板
    HDU 2102 A计划
    POJ 1426 Find The Multiple
    POJ 3278 Catch That Cow
    POJ 1321 棋盘问题
    CF 999 C.Alphabetic Removals
    CF 999 B. Reversing Encryption
    string的基础用法
    51nod 1267 4个数和为0
  • 原文地址:https://www.cnblogs.com/zhishan/p/3077178.html
Copyright © 2011-2022 走看看