0 0

spring 3.1中cache问题(ehcache)5

在项目中有使用到spring3.1的cache(使用内置的EhCache)

在一个类中有两个方法.  这两个方法的缓存名是一样的, key值都是用户id.

第一个方法中已经缓存过一个对象了(比如userA), 在调用第二个方法 用userA的uid获取userA实例的时候, 发现还是会去数据库查询,而不是直接从缓存中获得. 请问这是什么原因造成的呢?

@Cacheable(value="userInfo", key="#userInfo.getUid()")
public UserInfo putInCache(UserInfo userInfo){
      return userInfo;
}


@Cacheable(value="userInfo", key="#uid")
public UserInfo getById(int uid){
       //从数据库根据uid查询UserInfo, 返回一个userInfo, 方法省略
       return userInfo;
}

 

 

 

2013年8月29日 00:11

5个答案 按时间排序 按投票排序

0 0

你确定2个方法中的其中一个 或者 两个都可以正常的缓存?

2013年8月30日 10:35
0 0

key="#userInfo.getUid()"

改成
key="#userInfo.uid"

2013年8月30日 10:34
0 0

缓存注解需要加在接口方法上,然后调用该接口实现类的方法才能使用到缓存。

2013年8月30日 09:32
0 0

public static void main(String[] args) {

CacheManager manager = CacheManager.create();// 默认配置文件创建

String[] names = manager.getCacheNames();

for (int i = 0; i < names.length; i++) {

System.out.println(names[i]);

}

//Cache cache = manager.getCache(names[0]);


Cache cache = new Cache("test", 150, true, false, 5, 2);

manager.addCache(cache);


cache.put(new Element("key1","value1"));


Element element = cache.get("key1");

System.out.println(element.getValue());


String[] names1 = manager.getCacheNames();

for (int i = 0; i < names1.length; i++) {

System.out.println(names1[i]);

}

}



检查一下缓存配置成功没有

2013年8月29日 09:12
0 0

猜想:
1.0 putInCache(UserInfo userInfo){   userInfo 对象的uId 为空?或者类型 是包装类的影响
2.0 你的缓存压根没起作用!

2013年8月29日 09:02

相关推荐

    spring 3.1中的cache小结

    在Spring 3.1版本中,引入了对缓存的支持,极大地提高了应用程序的性能和效率。这个特性使得开发者能够方便地在应用中集成缓存机制,而无需深入了解底层缓存库的实现细节。本文将围绕Spring 3.1的缓存功能进行详细...

    Spring 3.1 Cache Abstraction Tutorial

    Spring框架从3.1版本开始引入了强大的缓存抽象,使得开发者能够轻松地在应用程序中集成缓存功能。本教程将深入探讨Spring 3.1的缓存抽象,帮助你理解其核心概念和实现方式。 1. **缓存抽象的概念** Spring 3.1的...

    spring3.1 api

    新增了Cache抽象,提供了一种统一的缓存管理接口,支持Ehcache、Guava等主流缓存库,方便实现高效的缓存策略。 7. **表达式语言(SpEL)** Spring Expression Language在3.1版本中增强了其功能,支持更多的操作符...

    Spring与ehcache结合使用

    本文将详细介绍如何在Spring框架中集成ehcache来实现本地缓存,从而提升应用的整体性能。 #### 二、ehcache简介 ehcache是一款开源的高性能Java本地缓存系统,它可以极大地减少数据库的访问次数,提高应用程序的...

    Ehcache(一): Spring + Ehcache开场白

    Spring框架自3.1版本起引入了抽象的缓存管理机制,允许开发者选择不同的缓存实现,如Ehcache、Guava Cache等。通过声明式或编程式的缓存注解,可以轻松地在方法级别启用缓存功能。 集成Ehcache,首先需要在项目中...

    JAVA编程之spring cache本机缓存应用

    1、SpringCache是Spring提供的一个缓存框架,在Spring3.1版本开始支持将缓存添加到现有的spring应用程序中,在4.1开始,缓存已支持JSR-107注释和更多自定义的选项 2、Spring Cache利用了AOP,实现了基于注解的缓存...

    Spring+EhCache缓存实例

    Spring框架自3.1版本开始引入了统一的缓存抽象,支持多种缓存实现,其中包括EhCache。Spring的缓存抽象层使得切换缓存提供商变得简单,而无需改动大量代码。 **3. 配置Spring与EhCache** 在Spring中使用EhCache,...

    Spring整合EhCache

    从 Spring 3.1 版本开始,Spring 框架正式引入了对 Cache 的支持,这种支持的方式和原理与 Spring 对事务管理的支持非常类似。通过这种方式,开发人员可以在不增加大量额外代码的情况下轻松地集成缓存技术,从而提高...

    Spring来实现一个Cache简单的解决方案

    ### Spring实现Cache简单解决方案 ...需要注意的是,在实际开发中可能还需要考虑更多的细节问题,比如缓存一致性、并发控制等。但是,通过本文提供的基础框架,已经足够支撑大多数应用场景的需求。

    spring整合EhCache 简单例子

    Spring整合EhCache是一个常见的缓存管理方案,尤其在企业级Java应用中广泛使用。Spring框架提供了对多种缓存技术的支持,包括EhCache,这使得我们能够在Spring应用中轻松地实现数据缓存,提高系统性能。下面我们将...

    Ehcache分布式缓存与其在spring中的使用

    ### Ehcache分布式缓存及其在Spring中的应用 #### 一、Ehcache概述与原理 Ehcache是一款高效且轻量级的纯Java缓存框架,由于其出色的性能和易于集成的特点,在Java开发中有着广泛的应用。作为Hibernate的默认缓存...

    Spring基于注解的缓存配置--EHCache AND OSCache

    Spring 3.1引入了一种统一的缓存抽象,它允许开发者在不关心具体缓存实现的情况下,轻松地在应用程序中引入缓存功能。这种抽象包括了注解、接口和配置元素,使得缓存的使用变得简单。 2. **注解驱动的缓存** - `@...

    Spring cache

    Spring Cache 是 Spring 3.1 版本引入的一项重要特性,它不是一种具体的缓存实现(如 EHCache 或 OSCache),而是一种缓存使用的抽象层。通过在现有的业务代码上添加特定的注解,可以轻松地为方法调用添加缓存支持。...

    详解Spring整合Ehcache管理缓存

    尽管 Ehcache 已经发布到了 3.1 版本,但本文将以 2.10.2 版本为基础进行讲解,因为 Spring 4.x 版本尚不直接支持 Ehcache 3.x。尽管可以通过 JCache API 进行间接整合,但这可能会增加复杂性。 ### 安装 Ehcache ...

    Spring Boot 整合 Spring-cache:让你的网站速度飞起来.docx

    Spring Cache 是 Spring 框架的一个模块,自 3.1 版本起引入,提供了基于注解的缓存抽象,使得开发者能够方便地在应用中集成和管理缓存。 一、Spring Cache 介绍 Spring Cache 提供了一种统一的方式来管理不同类型...

    Spring Cache的基本使用与实现原理详解

    Spring Cache 是Spring框架提供的一种缓存抽象,从Spring 3.1版本开始引入,目的是为了简化应用程序中的缓存管理,实现缓存透明化。通过在方法上添加特定注解,如@Cacheable、@CacheEvict等,可以轻松地启用缓存功能...

    spring缓存ehcache

    从3.1开始,Spring引入了对Cache的支持。其使用方法和原理都类似于Spring对事务管理的支持。Spring Cache是作用在方法上的,其核心思想是这样的:当我们在调用一个缓存方法时会把该方法参数和返回结果作为一个键值对...

    spring3.1.4源码

    12. **缓存抽象**:Spring 3.1引入了缓存抽象,支持Ehcache、Hazelcast等缓存系统,相关接口位于`org.springframework.cache`包下。 通过阅读和分析Spring 3.1.4的源码,开发者可以深入了解Spring框架的设计理念和...

    点智数码--注释驱动的-Spring-cache-缓存的介绍.doc

    Spring Cache 是 Spring 框架从 3.1 版本开始引入的一种注解驱动的缓存抽象,它提供了一种简单而灵活的方式来在应用程序中实现缓存功能,无需依赖特定的缓存实现,如 EhCache 或 OSCache。Spring Cache 的核心特性...

    浅析SpringCache缓存1

    Spring Cache 是 Spring 框架从 3.1 版本开始引入的一个强大特性,它提供了一种透明化的缓存机制,允许开发者在不修改原有业务代码的基础上,轻松地为应用程序添加缓存功能。这个抽象层使得我们可以使用不同的缓存...

Global site tag (gtag.js) - Google Analytics