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

简介:
在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>

本文转自 dannyy1026 51CTO博客,原文链接:
http://blog.51cto.com/dannyyuan/159879
相关文章
|
1月前
|
数据采集 Web App开发 API
FastAPI与Selenium:打造高效的Web数据抓取服务 —— 采集Pixabay中的图片及相关信息
本文介绍了如何使用FastAPI和Selenium搭建RESTful接口,访问免版权图片网站Pixabay并采集图片及其描述信息。通过配置代理IP、User-Agent和Cookie,提高爬虫的稳定性和防封禁能力。环境依赖包括FastAPI、Uvicorn和Selenium等库。代码示例展示了完整的实现过程,涵盖代理设置、浏览器模拟及数据提取,并提供了详细的中文注释。适用于需要高效、稳定的Web数据抓取服务的开发者。
101 15
FastAPI与Selenium:打造高效的Web数据抓取服务 —— 采集Pixabay中的图片及相关信息
|
13天前
|
存储 JSON JavaScript
WEB CAD插件通过上下文对象MxPluginContext修改UI界面的方法
本文介绍了如何使用MxPluginContext动态控制MxCAD项目的UI界面。通过该上下文对象,开发者可以灵活设置UI配置,如控制操作栏显隐、编辑按钮、添加侧边栏等。具体方法包括调用`getUiConfig()`获取并修改`mxUiConfig.json`中的属性,实现界面的定制化。此外,还提供了控制命令行聚焦的功能,解决输入框焦点锁定问题。详细代码示例和效果对比图展示了具体实现步骤,帮助开发者更好地适配项目需求。
|
1月前
|
网络协议 Java Shell
java spring 项目若依框架启动失败,启动不了服务提示端口8080占用escription: Web server failed to start. Port 8080 was already in use. Action: Identify and stop the process that’s listening on port 8080 or configure this application to listen on another port-优雅草卓伊凡解决方案
java spring 项目若依框架启动失败,启动不了服务提示端口8080占用escription: Web server failed to start. Port 8080 was already in use. Action: Identify and stop the process that’s listening on port 8080 or configure this application to listen on another port-优雅草卓伊凡解决方案
66 7
|
4月前
|
开发框架 搜索推荐 数据可视化
Django框架适合开发哪种类型的Web应用程序?
Django 框架凭借其强大的功能、稳定性和可扩展性,几乎可以适应各种类型的 Web 应用程序开发需求。无论是简单的网站还是复杂的企业级系统,Django 都能提供可靠的支持,帮助开发者快速构建高质量的应用。同时,其活跃的社区和丰富的资源也为开发者在项目实施过程中提供了有力的保障。
182 62
|
3月前
|
Java 开发者 微服务
Spring Boot 入门:简化 Java Web 开发的强大工具
Spring Boot 是一个开源的 Java 基础框架,用于创建独立、生产级别的基于Spring框架的应用程序。它旨在简化Spring应用的初始搭建以及开发过程。
121 7
Spring Boot 入门:简化 Java Web 开发的强大工具
|
4月前
|
开发框架 JavaScript 前端开发
TypeScript 是一种静态类型的编程语言,它扩展了 JavaScript,为 Web 开发带来了强大的类型系统、组件化开发支持、与主流框架的无缝集成、大型项目管理能力和提升开发体验等多方面优势
TypeScript 是一种静态类型的编程语言,它扩展了 JavaScript,为 Web 开发带来了强大的类型系统、组件化开发支持、与主流框架的无缝集成、大型项目管理能力和提升开发体验等多方面优势。通过明确的类型定义,TypeScript 能够在编码阶段发现潜在错误,提高代码质量;支持组件的清晰定义与复用,增强代码的可维护性;与 React、Vue 等框架结合,提供更佳的开发体验;适用于大型项目,优化代码结构和性能。随着 Web 技术的发展,TypeScript 的应用前景广阔,将继续引领 Web 开发的新趋势。
80 2
|
4月前
|
中间件 Go API
Go语言中几种流行的Web框架,如Beego、Gin和Echo,分析了它们的特点、性能及适用场景,并讨论了如何根据项目需求、性能要求、团队经验和社区支持等因素选择最合适的框架
本文概述了Go语言中几种流行的Web框架,如Beego、Gin和Echo,分析了它们的特点、性能及适用场景,并讨论了如何根据项目需求、性能要求、团队经验和社区支持等因素选择最合适的框架。
309 1
|
4月前
|
XML Java 网络架构
使用 Spring Boot 公开 SOAP Web 服务端点:详细指南
使用 Spring Boot 公开 SOAP Web 服务端点:详细指南
220 0
|
7天前
|
机器学习/深度学习 开发框架 API
Python 高级编程与实战:深入理解 Web 开发与 API 设计
在前几篇文章中,我们探讨了 Python 的基础语法、面向对象编程、函数式编程、元编程、性能优化、调试技巧以及数据科学和机器学习。本文将深入探讨 Python 在 Web 开发和 API 设计中的应用,并通过实战项目帮助你掌握这些技术。
|
5月前
|
XML JSON API
ServiceStack:不仅仅是一个高性能Web API和微服务框架,更是一站式解决方案——深入解析其多协议支持及简便开发流程,带您体验前所未有的.NET开发效率革命
【10月更文挑战第9天】ServiceStack 是一个高性能的 Web API 和微服务框架,支持 JSON、XML、CSV 等多种数据格式。它简化了 .NET 应用的开发流程,提供了直观的 RESTful 服务构建方式。ServiceStack 支持高并发请求和复杂业务逻辑,安装简单,通过 NuGet 包管理器即可快速集成。示例代码展示了如何创建一个返回当前日期的简单服务,包括定义请求和响应 DTO、实现服务逻辑、配置路由和宿主。ServiceStack 还支持 WebSocket、SignalR 等实时通信协议,具备自动验证、自动过滤器等丰富功能,适合快速搭建高性能、可扩展的服务端应用。
303 3