Ehcache(06)——监听器

监听器

 

       Ehcache中监听器有两种,监听CacheManager的CacheManagerEventListener和监听Cache的CacheEventListener。在Ehcache中,Listener是通过对应的监听器工厂来生产和发生作用的。下面我们将来介绍一下这两种类型的监听器。

 

1       CacheManager监听器

       Ehcache中定义了一个CacheManagerEventListener接口来监听CacheManager的事件。CacheManagerEventListener可以监听的事件有CacheManager添加和移除Cache。其中定义有如下五个方法:

Java代码   收藏代码
  1. public interface CacheManagerEventListener {  
  2.    
  3.     void init() throws CacheException;  
  4.    
  5.     Status getStatus();  
  6.    
  7.     void dispose() throws CacheException;  
  8.    
  9.     void notifyCacheAdded(String cacheName);  
  10.    
  11.     void notifyCacheRemoved(String cacheName);  
  12.    
  13. }  

 

 

l  init方法会在CacheManagerEventListener实现类实例化后被调用,用于初始化CacheManagerEventListener。

l  getStatus方法返回当前CacheManagerEventListener所处的状态,可选值有STATUS_UNINITIALISEDSTATUS_ALIVESTATUS_SHUTDOWN

l  dispose方法用于释放资源。

l  notifyCacheAdded方法会在往CacheManager中添加Cache时被调用。

l  notifyCacheRemoved方法会在从CacheManager中移除Cache时被调用。

 

       Ehcache是通过CacheManagerEventListenerFactory来获取当前CacheManager所使用的CacheManagerEventListener的。CacheManagerEventListenerFactory是一个抽象类,其定义如下:

Java代码   收藏代码
  1. public abstract class CacheManagerEventListenerFactory {  
  2.    
  3.     public abstract CacheManagerEventListener  
  4.             createCacheManagerEventListener(CacheManager cacheManager, Properties properties);  
  5.    
  6. }  

 

 

       在我们自己的CacheManagerEventListenerFactory子类中需要实现其抽象方法createCacheManagerEventListener,在生成对应的CacheManagerEventListener进行返回时我们可以使用当前的CacheManager以及在ehcache.xml文件中定义CacheManagerEventListenerFactory时指定的属性Properties。通过CacheManagerEventListenerFactory我们可以实现为不同的CacheManager使用不同的CacheManagerEventListener。

       有了CacheManagerEventListener和CacheManagerEventListenerFactory之后,我们需要在对应的ehcache.xml文件中通过cacheManagerEventListenerFactory元素来指定当前ehcache.xml文件对应的CacheManager所使用的事件监听器工厂,每一个ehcache.xml文件中最多只能指定一个cacheManagerEventListenerFactory元素。

       cacheManagerEventListenerFactory元素可以指定三个属性:class、properties和propertySeparator。

l  class属性必须指定,表示对应的CacheManagerEventListenerFactory实现类全名。

l  properties属性可选,用来指定CacheManagerEventListenerFactory在创建CacheManagerEventListener时需要使用的属性,里面是键值对的形式,多个属性之间默认用逗号隔开。如“prop1=val1,prop2=val2”。

l  propertySeparator属性可选,用来指定properties属性之间的分隔符。

 

       下面给一个监听CacheManager事件的示例。

       1、实现自己的CacheManagerEventListener。

Java代码   收藏代码
  1. public class MyCacheManagerEventListener implements CacheManagerEventListener {  
  2.    
  3.    private final CacheManager cacheManager;  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值