`
lastsoul
  • 浏览: 34886 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

ehcache缓存对象(三)-手动编程

    博客分类:
  • WEB
 
阅读更多
通过上面的文章可以知道如何缓存一个方法的返回值,但是如果想缓存任意一个对象,或者根据一定条件才决定 要不要读取缓存怎么办?那就只能通过手动编程的方式了,即调用cache对象的put,get等API。
实现方式就是把cache的bean注入到具体的方法中。比如http://lastsoul.iteye.com/admin/blogs/2246566文章中的simpleCache对象
package com.temobi.cache.service.Impl;

import java.util.List;

import javax.annotation.Resource;

import org.springframework.stereotype.Service;

import com.temobi.cache.service.ICacheService;

import net.sf.ehcache.Cache;
import net.sf.ehcache.Element;
	
/**
* 功能/模块
* @author  
* @version 1.0 2015年9月24日
* 类描述  
*/

@Service
public class EhCacheImpl implements ICacheService {

	@Resource(name="simpleCache")
	private Cache cache;
	 
    public void setCache(Cache cache) {
        this.cache = cache;
    }

	public Cache getCache() {
		return cache;
	}

	/* (non-Javadoc)
	 * @see com.temobi.cache.CacheInterface#put(java.lang.String, java.lang.Object)
	 */
	@Override
	public void put(String cacheKey, Object cacheValue) {
		Element element = new Element(cacheKey,cacheValue);
		cache.put(element);
	}

	/* (non-Javadoc)
	 * @see com.temobi.cache.CacheInterface#get(java.lang.String)
	 */
	@Override
	public Object get(String cacheKey) {
		Element element = cache.get(cacheKey);
		if(element==null) return null;
		return element.getObjectValue();
	}

	/* (non-Javadoc)
	 * @see com.temobi.cache.CacheInterface#contains(java.lang.String)
	 */
	@Override
	public boolean contains(String cacheKey) {
		Element element = cache.get(cacheKey);
		return element==null?true:false;
	}

	/* (non-Javadoc)
	 * @see com.temobi.cache.CacheInterface#remove(java.lang.String)
	 */
	@Override
	public boolean remove(String cacheKey) {
		return cache.remove(cacheKey);
		
	}

	/* (non-Javadoc)
	 * @see com.temobi.cache.CacheInterface#replace(java.lang.String)
	 */
	@Override
	public boolean replace(String cacheKey, Object cacheValue) {
		Element old = cache.get(cacheKey);
		Element element = new Element(cacheKey,cacheValue);
		return cache.replace(old,element);
		/*System.out.println(cache.replace(element));
		return true;*/
	}

	/* (non-Javadoc)
	 * @see com.temobi.cache.CacheInterface#getKeys(java.lang.String)
	 */
	@Override
	public List<Object> getKeys() {
		List<Object> list=cache.getKeys();
		return list;
	}

}



分享到:
评论

相关推荐

    Spring AOP+ehCache简单缓存系统解决方案

    在本篇【Spring AOP+ehCache简单缓存系统解决方案】中,我们将探讨如何利用Spring AOP(面向切面编程)和ehCache框架来构建一个高效、简单的缓存系统,以提升应用程序的性能。ehCache是一款流行的开源Java缓存库,它...

    SSM+ehcache-Jar包

    1. **Spring**:Spring是一个开源的应用框架,提供IOC(Inversion of Control)容器来管理对象的生命周期和依赖关系,同时包含AOP(Aspect-Oriented Programming)支持,用于实现切面编程,提高代码的模块化和可维护...

    ehcache 2 8 包括文档

    - **缓存更新**:通过监听事件或手动触发,当数据源发生变化时,Ehcache可以自动或手动更新缓存。 6. **缓存的缓存管理器(Cache Manager)** - Ehcache的全局协调者,负责创建、管理和销毁缓存实例。 - 可以...

    java经典面试题目-面经-java-Java语言的进阶概念-常用的库和框架-并发编程-网络编程-Web开发-面经

    Java是一种广泛使用的面向对象编程(OOP)语言,其核心原则包括封装、继承、多态和抽象。封装是将数据和操作数据的方法捆绑在一起,...消息队列如RabbitMQ、Kafka用于解耦系统,缓存如Redis、Ehcache提升数据读取速度。

    SSM框架+Echache整合

    可以监听数据库的变更事件,或者在业务代码中手动触发缓存的更新或清除。 6. **性能优化** - 考虑缓存的命中率,合理设置缓存大小和过期策略,以平衡内存占用和缓存效果。 - 使用Ehcache的并发机制,如读写锁,...

    j2EE 缓存 Web前端优化 后台 服务器优化

    - **编程式缓存**:手动控制数据的存取,灵活性高,但维护复杂。 - **开源框架缓存**:如Hibernate的一级缓存和二级缓存,Ehcache等,提供开箱即用的缓存解决方案。 - **Hibernate一级缓存**:Session级别,存储...

    Hibernate缓存与spring事务详解

    2. **第二级缓存:可选的全局缓存** - 第二级缓存允许跨Session共享数据,可以使用第三方缓存提供者如Ehcache或Infinispan实现。这进一步优化了性能,但需要注意并发控制和数据一致性问题。 3. **查询缓存** - 缓存...

    maven+spring+ehcache

    这个实例演示了如何利用Maven作为构建工具,Spring作为核心框架,Ehcache作为缓存解决方案,以及Spring JDBC处理数据库交互。 **Maven** 是一个项目管理和综合工具,它管理项目的构建、依赖关系和生命周期。在本...

    ssm多模块基础框架+dubbo+ehcache

    【标题】"ssm多模块基础框架+dubbo+ehcache" 涉及到的核心技术栈包括Spring、SpringMVC、MyBatis(SSM)框架的整合,Dubbo服务治理框架,以及Ehcache缓存系统。这些技术在企业级Java应用开发中扮演着重要角色,下面...

    spring mvc + mybatis + ehcache

    在当今的软件开发领域,Spring MVC、MyBatis和Ehcache是三个极为重要的技术组件,它们各自扮演着关键角色,共同构建出高性能、易维护的Web应用程序。本文将深入探讨这三者之间的集成与应用。 首先,Spring MVC作为...

    缓存机制demo

    缓存机制不仅仅局限于ASP.NET,其他编程语言和框架如Java(使用Ehcache或Spring Cache)、PHP(使用APC或Memcached)等也有各自的缓存实现。理解并掌握缓存原理及实践,对于提升Web应用的性能至关重要。 总结起来,...

    Hibernate-api Hibernate文档

    可使用第三方缓存提供商如 EhCache 或 Infinispan。 九、Association Mapping - One-to-One:一对一关联。 - One-to-Many:一对多关联。 - Many-to-One:多对一关联。 - Many-to-Many:多对多关联。 十、...

    优化思路.doc

    - 手动清除:在更新原始数据时,需要同步清理相关缓存,可以使用切面编程(如RuleEvictCacheAspect)或注解方式(如PaOptionService)来实现。 通过上述策略,我们可以逐步优化代码,减少处理时间,提高系统的响应...

    Java中各类Cache机制实现解决方案

    此外,OSCache还支持缓存计划刷新机制,可以根据特定的时间间隔自动更新缓存数据,无需手动干预。 #### 三、Java Caching System (JCS) **Java Caching System (JCS)** 是一种简单而高效的缓存系统,专为Java应用...

    NHibernate事务、并发和缓存

    NHibernate是.NET框架下的一款流行的对象关系映射(ORM)工具,它允许开发人员使用面向对象的编程方式来操作数据库,极大地简化了数据库操作。在处理复杂的业务逻辑时,事务管理、并发控制以及缓存策略是提升系统...

    hibernate讲义

    - 编程式事务管理通过 `session.beginTransaction()`、`transaction.commit()` 和 `transaction.rollback()` 手动控制事务的开始、提交和回滚。 - 声明式事务管理通常通过 Spring 框架实现,利用 AOP(面向切面...

    java私塾独家首发最新Hibernate4教程

    - **二级缓存**:使用第三方缓存实现如EHCache,提高读写性能。 - **查询缓存**:缓存查询结果,减少数据库访问。 - **缓存管理**:控制缓存的刷新策略。 **4.2 最佳实践** - **零配置**:减少配置文件的使用,...

    Struts+spring+hibernate面试资料

    常见的第三方二级缓存插件有EHCache、OSCache等。 **缓存的范围** 包括事务范围、进程范围和集群范围。不同的范围适用于不同的应用场景,可以根据项目的实际需求选择合适的缓存策略。 - **事务范围**:每个事务有...

Global site tag (gtag.js) - Google Analytics