通过上面的文章可以知道如何缓存一个方法的返回值,但是如果想缓存任意一个对象,或者根据一定条件才决定 要不要读取缓存怎么办?那就只能通过手动编程的方式了,即调用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框架来构建一个高效、简单的缓存系统,以提升应用程序的性能。ehCache是一款流行的开源Java缓存库,它...
1. **Spring**:Spring是一个开源的应用框架,提供IOC(Inversion of Control)容器来管理对象的生命周期和依赖关系,同时包含AOP(Aspect-Oriented Programming)支持,用于实现切面编程,提高代码的模块化和可维护...
- **缓存更新**:通过监听事件或手动触发,当数据源发生变化时,Ehcache可以自动或手动更新缓存。 6. **缓存的缓存管理器(Cache Manager)** - Ehcache的全局协调者,负责创建、管理和销毁缓存实例。 - 可以...
Java是一种广泛使用的面向对象编程(OOP)语言,其核心原则包括封装、继承、多态和抽象。封装是将数据和操作数据的方法捆绑在一起,...消息队列如RabbitMQ、Kafka用于解耦系统,缓存如Redis、Ehcache提升数据读取速度。
可以监听数据库的变更事件,或者在业务代码中手动触发缓存的更新或清除。 6. **性能优化** - 考虑缓存的命中率,合理设置缓存大小和过期策略,以平衡内存占用和缓存效果。 - 使用Ehcache的并发机制,如读写锁,...
- **编程式缓存**:手动控制数据的存取,灵活性高,但维护复杂。 - **开源框架缓存**:如Hibernate的一级缓存和二级缓存,Ehcache等,提供开箱即用的缓存解决方案。 - **Hibernate一级缓存**:Session级别,存储...
2. **第二级缓存:可选的全局缓存** - 第二级缓存允许跨Session共享数据,可以使用第三方缓存提供者如Ehcache或Infinispan实现。这进一步优化了性能,但需要注意并发控制和数据一致性问题。 3. **查询缓存** - 缓存...
这个实例演示了如何利用Maven作为构建工具,Spring作为核心框架,Ehcache作为缓存解决方案,以及Spring JDBC处理数据库交互。 **Maven** 是一个项目管理和综合工具,它管理项目的构建、依赖关系和生命周期。在本...
【标题】"ssm多模块基础框架+dubbo+ehcache" 涉及到的核心技术栈包括Spring、SpringMVC、MyBatis(SSM)框架的整合,Dubbo服务治理框架,以及Ehcache缓存系统。这些技术在企业级Java应用开发中扮演着重要角色,下面...
在当今的软件开发领域,Spring MVC、MyBatis和Ehcache是三个极为重要的技术组件,它们各自扮演着关键角色,共同构建出高性能、易维护的Web应用程序。本文将深入探讨这三者之间的集成与应用。 首先,Spring MVC作为...
缓存机制不仅仅局限于ASP.NET,其他编程语言和框架如Java(使用Ehcache或Spring Cache)、PHP(使用APC或Memcached)等也有各自的缓存实现。理解并掌握缓存原理及实践,对于提升Web应用的性能至关重要。 总结起来,...
可使用第三方缓存提供商如 EhCache 或 Infinispan。 九、Association Mapping - One-to-One:一对一关联。 - One-to-Many:一对多关联。 - Many-to-One:多对一关联。 - Many-to-Many:多对多关联。 十、...
- 手动清除:在更新原始数据时,需要同步清理相关缓存,可以使用切面编程(如RuleEvictCacheAspect)或注解方式(如PaOptionService)来实现。 通过上述策略,我们可以逐步优化代码,减少处理时间,提高系统的响应...
此外,OSCache还支持缓存计划刷新机制,可以根据特定的时间间隔自动更新缓存数据,无需手动干预。 #### 三、Java Caching System (JCS) **Java Caching System (JCS)** 是一种简单而高效的缓存系统,专为Java应用...
NHibernate是.NET框架下的一款流行的对象关系映射(ORM)工具,它允许开发人员使用面向对象的编程方式来操作数据库,极大地简化了数据库操作。在处理复杂的业务逻辑时,事务管理、并发控制以及缓存策略是提升系统...
- 编程式事务管理通过 `session.beginTransaction()`、`transaction.commit()` 和 `transaction.rollback()` 手动控制事务的开始、提交和回滚。 - 声明式事务管理通常通过 Spring 框架实现,利用 AOP(面向切面...
- **二级缓存**:使用第三方缓存实现如EHCache,提高读写性能。 - **查询缓存**:缓存查询结果,减少数据库访问。 - **缓存管理**:控制缓存的刷新策略。 **4.2 最佳实践** - **零配置**:减少配置文件的使用,...
常见的第三方二级缓存插件有EHCache、OSCache等。 **缓存的范围** 包括事务范围、进程范围和集群范围。不同的范围适用于不同的应用场景,可以根据项目的实际需求选择合适的缓存策略。 - **事务范围**:每个事务有...