在Spring框架中用AOP实现WEB服务的方法

By | 05月21日
Advertisement

在Spring框架中用AOP实现WEB服务的方法
我们建立一个Interface包含所有的欲发布的方法,这里假设INTERFACE为ExampleWebService, 我们在该接口基础上派生出实现类ExampleWebServiceImpl,该实现类有一预配置的属性对象exampleWebServiceHandler, 所有ExampleWebService接口的方法在实现类的实现转为属性对象exampleWebServiceHandler相对应方法调用。这样做的好处是可以用Spring的AOP思想很简单地对接口参数添加校验,认证,修整数据等通用步骤。该属性对象bean指向的是一个自动代理bean,该bean加了拦截器来实现上述所需功能。所加拦截器所配置的advice属性为指向具体拦截算法的处理类bean。
拦截处理类直接实现MethodBeforeAdvice, AfterReturningAdvice, ConstructorInterceptor, FieldInterceptor, MethodInterceptor接口的before(Method arg0, Object[] arg1, Object arg2), afterReturning(Object arg0, Method arg1, Object[] arg2, Object arg3), construct,get/set, invoke方法来实现在调用前,调用后,构造时,属性存取时,调用时加入具体拦截过程。
以下是一个配置示例(WS的配置另文收录):

<bean id="applicationContext"
class="org.apache.axis2.extensions.spring.receivers.ApplicationContextHolder" />

<bean id="exampleWebService"
class="com.mycompany.proj.api.service.ExampleWebServiceImpl">
<property name="exampleWebServiceHandler" ref="exampleWebServiceHandlerProxy"></property>
</bean>
<bean id="apiFaultCheckingHandler"
class="com.mycompany.proj.api.service.util.FaultCheckingHandlerImpl">
<property name="maxServiceThreadNumber" value="${api.maxconnections}"></property>
</bean>
<bean id="apiCheckingAdvisor"
class="org.springframework.aop.support.RegexpMethodPointcutAdvisor">
<property name="advice" ref="apiCheckingHandler"></property>
<property name="pattern">
<value>.*</value>
</property>
</bean>
<bean id="apiCheckingBeforeAction" class="com.mycompany.proj.api.service.util.APICheckingBeforeAdvice">
</bean>
<bean id="apiCheckingBeforeActionAdvisor"
class="org.springframework.aop.support.RegexpMethodPointcutAdvisor">
<property name="advice" ref="apiCheckingBeforeAction"></property>
<property name="pattern">
<value>.*</value>
</property>
</bean>
<bean id="exampleWebServiceHandler" class="com.mycompany.proj.api.service.ExampleWebServiceHandler">
</bean>
<bean id="exampleWebServiceHandlerProxy" class="org.springframework.aop.framework.ProxyFactoryBean">
<property name="proxyInterfaces">
<value>com.webex.slim.api.service.IExampleWebService</value>
</property>
<property name="target" ref="exampleWebServiceHandler"></property>
<property name="interceptorNames">
<list>
<value>apiCheckingBeforeActionAdvisor</value>
<value>apiCheckingAdvisor</value>
</list>
</property>
</bean>

本文出自 “守望者的技术日记和六..” 博客,请务必保留此出处

Similar Posts:

  • Spring框架与AOP思想的研究与应用

    Spring框架与AOP思想的研究与应用 来源:中国论文下载中心 [ 08-05-06 10:11:00 ] 作者:梁琳 许向众 摘要 本文对Spring框架中所包含的AOP思想以及事务管理进行了分析,并通过对一个业务对象实现加锁/解锁的操作,说明了动态代理模式的可行性与有效性. 关键词 AOP:横切关注点:控制反转:动态代理 0引言 Aspect Oriented Programming(AOP)是近年来计算机技术中比较热门的话题之一.其发展历史从学术领域和研发机构的运用开始,目前流行的Spr

  • 【转】通过 WSE 3.0 中的可扩展策略框架保护您的 Web 服务

    Web Services Enhancements (WSE) 3.0 是 Visual Studio® 2005 和 Microsoft® .NET Framework 2.0 的附件.它提供高级 Web 服务功能,有助于和不断发展的 Web 服务协议规范同步. WSE 策略框架提供了一种机制,以描述 Web 服务需要执行的约束和要求.本文,我将介绍 WSE 中策略框架的工作方式.我将讨论 WSE 3.0 支持的安全方案,特别是 WSE 生成和使用的安全 SOAP 消息的有线格式.然后,我会探

  • Spring框架与AOP思想的研究与应用(1)

    本文对Spring框架中所包含的AOP思想以及事务管理进行了分析,并通过对一个业务对象实现加锁/解锁的操作,说明了动态代理模式的可行性与有效性. AD: 引言 Aspect Oriented Programming(AOP)是近年来计算机技术中比较热门的话题之一.其发展历史从学术领域和研发机构的运用开始,目前流行的Spring应用程序框架将AOP思想融入了整个框架的设计开发与应用当中.使用Spring框架固然给我们的编程带来了好处与便利,但是同时存在着一个问题,对于初学者来说,所谓的"控制反转&

  • java架构解密——Spring框架的AOP:参数操作

    在最近的研究中,发现aspectj 的拦截非常实用,也封装了N多方法方便我们调用,正好我们在对工作流的业务进行封装,发现虽然有些需求没有实现但是和我们的封装已经可以在很高的层面上吻合,给大家分享 获取目标方法的信息 访问目标方法最简单的做法是定义增强处理方法时,将第一个参数定义为JoinPoint类型,JoinPoint是SpringAoP中,只支持Method Execution (方法执行)的Joinpoint,对于类型中的属性,我们可以通过对setter,getter方法的拦截从而达到相同

  • 应用spring框架的aop技术编程时报错: java.lang.IllegalArgumentException

    org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'personService' defined in class path resource [beans.xml]: Initialization of bean failed; nested exception is java.lang.IllegalArgumentException: error at ::0 for

  • 不安装Java EE,通过Tomcat运行JAX-WS Web服务的方法

    一,安装Servlet容器,我们选用Tomcat,当然也可以选择GlassFish开源版.设置CATALINA_HOME系统变量. 二,从http://jax-ws.java.net,下载JAX-WS RI,解压到一个目录.将这个目录设置为JAXWS_HOME系统变量. 三,进入$JAXWS_HOME,运行ant install,将会自动把JAXWS库复制到Tomcat相关目录. 四,进入$JAXWS_HOME/samples/provider,运行ant clean server -Dtomc

  • 举例说明spring框架中三种创建bean的方法

    1.通过创建静态工厂的方法进行创建bean 代码: com.phome.dao.DAO -> dao public class DAO { // 创建一个当前类的静态的实例对象 private static DAO dao = new DAO(); // 构造方法私有化 private DAO() { } // 创建一个外部访问当前对象的方法 public static DAO getDao(){ System.out.println("getDao()的方法被执行了"); re

  • Spring 系列: Spring 框架简介----Spring AOP 和 IOC 容器入门

    在这由三部分组成的介绍 Spring 框架的系列文章的第一期中,将开始学习如何用 Spring 技术构建轻量级的.强壮的 J2EE 应用程序.developerWorks 的定期投稿人 Naveen Balani 通过介绍 Spring 框架开始了他由三部分组成的 Spring 系列,其中还将介绍 Spring 面向方面的编程(AOP)和控制反转(IOC)容器. Spring 是一个开源框架,是为了解决企业应用程序开发复杂性而创建的.框架的主要优势之一就是其分层架构,分层架构允许您选择使用哪一个

  • Spring 框架参考文档(五)-The Web之Web MVC 框架

    Spring 框架参考文档(五)-The Web之Web MVC 框架 Part V. The Web 这部分参考文档将介绍 Spring 框架 对表现层的支持(特别是对 web 表现层的支持),和支持 web socket 形式式的web应用. Spring 框架拥有自己的 web 框架 -- Spring Web MVC,这部分将会在前两章介绍.后续章节将介绍 Spring 框架与其他 web 技术的集成,如 JSF 等. 紧跟着介绍 Spring MVC 框架,portlet 框架. Fo

  • Spring框架AOP源码剖析

    今天我要和大家分享的是 AOP(Aspect-Oriented Programming)这个东西的源码剖析,作为多年的开发者,想必大家在面试的时候都被问过,你知道Spring框架AOP的底层实现机制吗,这可是很简单的噢,我们会说,如果某个类有接口就使用JDK动态代理,没有接口就用CGLIB动态代理,并且Spring也提供了可配置开关,不管有无接口都一律使用CGLIB动态代理,例如 <aop:aspectj-autoproxy proxy-target-class="true"/&

Tags: