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

  • 相关阅读:
    01 《i》控制字体大小 v-for循环绑定类名 v-bind 结合三目运算 动态添加类
    右侧是长方形和半圆结合 光标放上去在规定时间内完成动画
    04-align-content 它对于当单行是没有效果的
    03-flex-wrap是否换行
    02-align-items的用法
    01--顶部的通告特效---仅显示一条一条滚动
    洛谷P2392 kkksc03考前临时抱佛脚(01背包/搜索)
    蓝桥杯 9大臣的旅费(树的直径)
    蓝桥杯 8买不到的数目(数论/线性DP)
    蓝桥杯 7连号区间数(暴力or并查集(?)
  • 原文地址:https://www.cnblogs.com/zhishan/p/3077178.html
Copyright © 2011-2022 走看看