在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
相关文章
|
2月前
|
开发框架 前端开发 Go
【GoGin】(0)基于Go的WEB开发框架,GO Gin是什么?怎么启动?本文给你答案
Gin:Go语言编写的Web框架,以更好的性能实现类似Martini框架的APInet/http、Beego:开源的高性能Go语言Web框架、Iris:最快的Go语言Web框架,完备的MVC支持。
372 1
|
6月前
|
开发框架 JSON 中间件
Go语言Web开发框架实践:路由、中间件、参数校验
Gin框架以其极简风格、强大路由管理、灵活中间件机制及参数绑定校验系统著称。本文详解其核心功能:1) 路由管理,支持分组与路径参数;2) 中间件机制,实现全局与局部控制;3) 参数绑定,涵盖多种来源;4) 结构体绑定与字段校验,确保数据合法性;5) 自定义校验器扩展功能;6) 统一错误处理提升用户体验。Gin以清晰模块化、流程可控及自动化校验等优势,成为开发者的优选工具。
|
6月前
|
开发框架 安全 前端开发
Go Web开发框架实践:模板渲染与静态资源服务
Gin 是一个功能强大的 Go Web 框架,不仅适用于构建 API 服务,还支持 HTML 模板渲染和静态资源托管。它可以帮助开发者快速搭建中小型网站,并提供灵活的模板语法、自定义函数、静态文件映射等功能,同时兼容 Go 的 html/template 引擎,具备高效且安全的页面渲染能力。
|
6月前
|
开发框架 JSON 中间件
Go语言Web开发框架实践:使用 Gin 快速构建 Web 服务
Gin 是一个高效、轻量级的 Go 语言 Web 框架,支持中间件机制,非常适合开发 RESTful API。本文从安装到进阶技巧全面解析 Gin 的使用:快速入门示例(Hello Gin)、定义 RESTful 用户服务(增删改查接口实现),以及推荐实践如参数校验、中间件和路由分组等。通过对比标准库 `net/http`,Gin 提供更简洁灵活的开发体验。此外,还推荐了 GORM、Viper、Zap 等配合使用的工具库,助力高效开发。
|
8月前
|
人工智能 自然语言处理 JavaScript
测试工程师要失业?Magnitude:开源AI Agent驱动的端到端测试框架,让Web测试更智能,自动完善测试用例!
Magnitude是一个基于视觉AI代理的开源端到端测试框架,通过自然语言构建测试用例,结合推理代理和视觉代理实现智能化的Web应用测试,支持本地运行和CI/CD集成。
971 15
测试工程师要失业?Magnitude:开源AI Agent驱动的端到端测试框架,让Web测试更智能,自动完善测试用例!
|
Java Spring
Spring(08)——方法注入之替换方法实现
8方法注入之替换方法实现 Spring提供了一种替换方法实现的机制,可以让我们改变某个bean某方法的实现。打个比方我们有一个bean,其中拥有一个add()方法可以用来计算两个整数的和,但这个时候我们想把它的实现逻辑改为如果两个整数的值相同则把它们相乘,否则还是把它们相加,在不改变或者是不能改变源码的情况下我们就可以通过Spring提供的替换方法实现机制来实现这一要求。
963 0
|
5月前
|
Java Spring 容器
SpringBoot自动配置的原理是什么?
Spring Boot自动配置核心在于@EnableAutoConfiguration注解,它通过@Import导入配置选择器,加载META-INF/spring.factories中定义的自动配置类。这些类根据@Conditional系列注解判断是否生效。但Spring Boot 3.0后已弃用spring.factories,改用新格式的.imports文件进行配置。
930 0
|
6月前
|
人工智能 Java 测试技术
Spring Boot 集成 JUnit 单元测试
本文介绍了在Spring Boot中使用JUnit 5进行单元测试的常用方法与技巧,包括添加依赖、编写测试类、使用@SpringBootTest参数、自动装配测试模块(如JSON、MVC、WebFlux、JDBC等),以及@MockBean和@SpyBean的应用。内容实用,适合Java开发者参考学习。
675 0
|
2月前
|
JavaScript Java Maven
【SpringBoot(二)】带你认识Yaml配置文件类型、SpringMVC的资源访问路径 和 静态资源配置的原理!
SpringBoot专栏第二章,从本章开始正式进入SpringBoot的WEB阶段开发,本章先带你认识yaml配置文件和资源的路径配置原理,以方便在后面的文章中打下基础
318 3
|
2月前
|
Java 测试技术 数据库连接
【SpringBoot(四)】还不懂文件上传?JUnit使用?本文带你了解SpringBoot的文件上传、异常处理、组件注入等知识!并且带你领悟JUnit单元测试的使用!
Spring专栏第四章,本文带你上手 SpringBoot 的文件上传、异常处理、组件注入等功能 并且为你演示Junit5的基础上手体验
867 2