您的位置:首页 > 编程语言 > Java开发

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

2009-05-21 21:36 531 查看
在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>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息