首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

一个Spring框架下的方法调用监视器

2012-08-25 
一个Spring框架上的方法调用监视器参照Spring源代码我写了一个方法调用监视器,和声明式事务一样,这是个声

一个Spring框架上的方法调用监视器

   参照Spring源代码我写了一个方法调用监视器,和声明式事务一样,这是个声明式监视器。本人只是为了学习之用,分享在这里,也许可以对某些人有些用。

先介绍一个最简单的使用例子:

1.配置。在Spring容器的配置文件中加入如下配置:
 


2. 确保CallMonitor.jar在你的类目录下。
   还依赖这些类库:commons-logging.jar, spring.jar(2.5). cglib-nodep-2.1_3.jar。

3. 在你的方法头上加入注解,例如:
    
   
  proxy-target-class, 值为true即启用cgLib代理,值为false则是缺省的JDK代理。用cgLib时你只能把注解定义在目标类,不能在接口上。
  order,类似优先级的概念,值越小则越优先。比如当目标方法还有一个事务的注解,你可以用这个值来控制两个拦截器的执行顺序。

实现思路
1.MonitorNamespaceHandler,来处理配置文件的命名空间。
CallMonitor.jar里面的META-INF里有两个文件:
   spring.handlers, Spring读取此文件来找到配置文件里monitor命名空间的解析器,即MonitorNamespaceHandler。
   spring.schemas,Spring读取此文件来找到相应的xsd文件。

2.MonitorAnnotationDrivenBeanDefinitionParser,来解析monitor:annotation-driven配置项,产生相关的类的定义。

3.MonitorAnnotationParser,来解析注解实例。

4.BeanFactoryMonitorAttributeSourceAdvisor,Spring用这个advisor来检查每一个生成的类是否包含@CallMonitoring,有的话则产生相应的代理。

5.MonitorInterceptor,拦截器,业务逻辑全在这里。

源代码请参见附件,欢迎下载和评论。

热点排行