EhCache event listener for preventing caching of null values in data store(ehcache监听器,坚挺value为null时清除)
ehcache的配置
<cache name="myNonNullCache"
<!-- cache configuration -->
>
<cacheEventListenerFactory class="com.example.cache.NotNullCacheEventListenerFactory" />
</cache>
监听工厂类
package com.pzoom.crabman.store;
/**
* Created with IntelliJ IDEA.
* User: Administrator
* Date: 13-1 -7
* Time: 上午10:33
* To change this template use File | Settings | File Templates.
*/
import java.util.Properties;
import net.sf.ehcache.event.CacheEventListener;
import net.sf.ehcache.event.CacheEventListenerFactory;
public class NotNullCacheEventListenerFactory extends CacheEventListenerFactory {
@Override
public CacheEventListener createCacheEventListener( final Properties properties) {
return NotNullCacheEventListener.INSTANCE;
}
}
监听实现类
package com.pzoom.crabman.store;
/**
* Created with IntelliJ IDEA.
* User: Administrator
* Date: 13-1 -7
* Time: 上午10:32
* To change this template use File | Settings | File Templates.
*/
import net.sf.ehcache.CacheException;
import net.sf.ehcache.Ehcache;
import net.sf.ehcache.Element;
import net.sf.ehcache.event.CacheEventListener;
public class NotNullCacheEventListener implements CacheEventListener {
public static final CacheEventListener INSTANCE = new NotNullCacheEventListener();
@Override
public void notifyElementRemoved(final Ehcache cache, final Element element) throws CacheException {
}
@Override
public void notifyElementPut(final Ehcache cache, final Element element) throws CacheException {
removeIfNull(cache, element);
}
@Override
public void notifyElementUpdated(final Ehcache cache, final Element element) throws CacheException {
removeIfNull(cache, element);
}
private void removeIfNull(final Ehcache cache, final Element element) {
if (element.getObjectValue() == null) {
cache.remove(element.getKey());
}
}
@Override
public void notifyElementExpired(final Ehcache cache, final Element element) {
}
@Override
public void notifyElementEvicted(final Ehcache cache, final Element element) {
}
@Override
public void notifyRemoveAll(final Ehcache cache) {
}
@Override
public void dispose() {
}
@Override
public Object clone() throws CloneNotSupportedException {
throw new CloneNotSupportedException("Singleton instance");
}
}
分享到:
相关推荐
7. **事件监听(Event Listeners)**:Ehcache支持添加监听器来监控缓存操作,例如缓存项的添加、更新和移除,便于进行相应的业务逻辑处理。 `ehcache-core-2.5.2-sources.jar`则是Ehcache的源代码文件,开发者可以...
7. **监听接口**:ehcache提供了缓存和缓存管理器的监听接口,便于监控缓存状态和行为。 8. **多实例支持**:允许在同一应用中存在多个缓存管理器实例,每个实例可以管理多个缓存区域,灵活性高。 #### 二、ehcache...
3. **Eviction Listeners**: 可以设置监听器来处理元素移除事件,例如通知系统进行进一步操作。 **Ehcache示例** 在`Ehcache_Hello`这个案例中,开发者可能会创建一个简单的缓存区,并通过API添加、获取和移除缓存...
例如,开发者可以设置缓存的大小、过期策略、缓存更新策略(如LRU、LFU等),以及缓存的事件监听器等。 总结起来,EhCache是一个强大而灵活的缓存解决方案,对于优化Java应用程序的性能具有重要作用。通过提供的...
以上就是Ehcache在Maven项目中的基本使用方法和关键知识点,包括配置、集成、操作缓存、过期策略、事件监听以及分布式缓存的实现。通过熟练掌握这些概念,你可以有效地利用Ehcache提升Java应用的性能。
在本文中,我们将深入探讨Ehcache的一些核心API及其用法。 首先,我们需要引入Ehcache的依赖。在Maven项目中,可以在pom.xml文件中添加以下依赖: ```xml <groupId>org.ehcache <artifactId>ehcache <version>3...
3. **缓存更新策略**: 支持缓存更新监听器,当源数据发生变化时,可以自动或手动更新缓存中的对应数据。 **四、Ehcache分布式缓存** 1. **Terracotta服务器**: Ehcache通过集成Terracotta服务器,可以实现跨JVM的...
7. **缓存事件监听**:通过注册缓存事件监听器,开发者可以监控缓存操作,例如添加、更新、删除等,以便在这些操作发生时执行相应的逻辑。 8. **与Spring框架的集成**:EHCache与Spring框架有良好的整合,可以方便...
同时,可以设置监听器来在缓存项过期或被移除时触发特定操作。 6. **分布式缓存**:Ehcache支持集群环境下的分布式缓存,通过 Terracotta服务器,多个节点可以共享同一份缓存数据,提高高可用性和读写性能。 7. **...
6. **缓存事件和监听器**:Ehcache支持监听缓存事件,例如元素添加、更新、移除等。开发者可以通过实现`net.sf.ehcache.event.CacheEventListener`接口来定制监听器,以便在这些事件发生时执行自定义逻辑。 7. **...
ehCache提供了事件监听机制,可以注册监听器来处理这些事件,保持缓存的一致性。 8. **缓存预热**:在系统启动时,将常用的数据加载到缓存中,以减少首次访问的延迟,这被称为缓存预热。可以通过编写特定的预热程序...
- **监听器插件化**:通过实现CacheManagerEventListener和CacheEventListener接口,可以轻松添加定制化的缓存管理器监听器和缓存事件监听器。 - **节点发现、冗余器和监听器插件化**:这些组件均支持插件化,允许...
6. **缓存更新与同步**:当数据库中的数据发生变化时,`ehcache`可以通过监听器或者定时任务来更新缓存中的数据,保持缓存与数据库的一致性。在分布式环境中,`ehcache`还可以通过RMI(远程方法调用)或Terracotta...
此外,可以通过监听器或者手动调用`remove`方法来清理特定的缓存项。 7. **缓存异常处理** 在使用Ehcache过程中,可能会遇到缓存未找到、缓存已满、缓存溢出等情况,需要适当地捕获并处理这些异常,以保证程序的...
综上所述,"ehcache_doc_2.10.4.zip"文档涵盖了Ehcache的基本概念、配置、使用方法、缓存策略、分布式缓存以及性能管理等多个方面,是开发人员理解和应用Ehcache的重要参考资料。在实践中,根据项目需求,深入阅读和...
- **发现机制、复制器和监听器插件**:为分布式缓存环境提供了高度定制化的选项。 - **应用持久性**: - **持久化的磁盘存储**:即使虚拟机重启也能保持数据完整性。 - **按需刷新至磁盘**:允许手动触发数据的...
- **缓存事件**:Ehcache提供缓存事件监听器,允许在缓存操作前后执行自定义逻辑。 - **Web插件**:Ehcache提供与Web应用服务器的集成,如Tomcat和Jetty,方便监控和管理缓存。 通过深入学习和实践Ehcache的官方...
这通常可以通过设置过期时间、缓存更新事件监听器等方式实现。 4. **代码中使用缓存**: 在业务代码中,我们可以使用Spring的`@Cacheable`、`@CacheEvict`和`@CachePut`注解来声明方法的返回结果应被缓存,清除特定...
7. **缓存监听器**:可以注册监听器来监控缓存的添加、更新和删除事件,以便进行其他业务逻辑处理。 **最佳实践** 1. **适当设置缓存大小**:根据应用需求和服务器资源,合理设定缓存的最大容量,避免内存溢出。 ...