给自己的requestProxy写个教程

requestProxy 是自己工作的需要,因为公司的业务,经常要对接第三方也就是各种供应,总是各种tttp,webservice

webservice其实还有如果有的供应商提供了jar,这个注入就来就好了,关键是好多都是http的没有什么可用的(或者我不知道),之前又参与了jeecg的minidao所以

用minidao的思路做了requestProxym就是用来接口和代理来完成所有的请求工作,然后使用Jackson和dom4j来完成对象的解析.

感觉更多多供应返回的xml,自己也写了一个xml解析工具,有需要的可以看下,利用反射和泛型完成常用的XMl解析.

下面介绍下自己的使用方法

1.第一肯定是xml配置,使用了httpclient来做底层的请求,连接池什么的还是大家配置比较好,每个人的需求都不同

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
	xmlns:context="http://www.springframework.org/schema/context"
	xmlns:jdbc="http://www.springframework.org/schema/jdbc" xmlns:tx="http://www.springframework.org/schema/tx"
	xmlns:jpa="http://www.springframework.org/schema/data/jpa"
	xsi:schemaLocation="
		http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
		http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd
		http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd
		http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-3.1.xsd
		http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.1.xsd
		http://www.springframework.org/schema/data/jpa http://www.springframework.org/schema/data/jpa/spring-jpa.xsd"
	default-autowire="byName" default-lazy-init="false">

	<description>Spring 管理类配置 </description>

	<context:annotation-config></context:annotation-config>

	<!-- httpclient线程池 -->
	<bean id="connectionManagerParams"
		class="org.apache.commons.httpclient.params.HttpConnectionManagerParams">
		<property name="connectionTimeout" value="120000" />
		<property name="soTimeout" value="120000" />
		<property name="maxTotalConnections" value="30" />
		<property name="defaultMaxConnectionsPerHost" value="20" />
	</bean>

	<bean id="connectionManager"
		class="org.apache.commons.httpclient.MultiThreadedHttpConnectionManager">
		<property name="params" ref="connectionManagerParams" />
	</bean>

	<bean id="httpClient" class="org.apache.commons.httpclient.HttpClient">
		<constructor-arg>
			<ref bean="connectionManager" />
		</constructor-arg>
	</bean>

	<!-- HTTP动态代理类 -->
	<bean id="requestHandler" class="com.onepiece.requestproxy.requestproxy.RequestProxyHandler">
		<property name="httpClient" ref="httpClient"></property>
	</bean>

	<!-- 注册 HTTP请求动态代理接口 -->
	<bean class="com.onepiece.requestproxy.factory.RequestBeanFactory">
		<property name="packagesToScan">
			<list>
				<value>com.jueyue.onepiece.test.request.*</value>
			</list>
		</property>
	</bean>

</beans>

2.编写接口这里参数和spring 重名了有点不好,大家可以自己重命名下,自己使用地方太多不好改了

@IRequest("testRequest")
public interface ITestRequest {

	@IRequestMethod(type = RequestTypeEnum.GET, url = "http://api.map.baidu.com/telematics/v3/weather")
	String testGet(@RequestParams("location") String location,
			@RequestParams("output") String output,
			@RequestParams("ak") String ak);

	@IRequestMethod(type = RequestTypeEnum.GET, url = "http://api.map.baidu.com/telematics/v3/weather")
	BaiduWeatherEntity testGetEntity(@RequestParams("location") String location,
			@RequestParams("output") String output,
			@RequestParams("ak") String ak);

}

3.server 里面注入,然后像java一样调用,就没有对外的感觉了

最后附上自己的地址

git

如果大家有兴趣,自己会慢慢写一些教程

给自己的requestProxy写个教程,布布扣,bubuko.com

时间: 2024-08-26 23:43:54

给自己的requestProxy写个教程的相关文章

Pixhawk上烧写ardupilot教程中的例程后飞控不工作的解决方法

在官方给的 http://ardupilot.org/dev/docs/learning-ardupilot-the-example-sketches.html 这个教程中,理应看到的是终端打印出一系列的GPS值,可是我在编译烧写成功后终端无法输出任何信息.详细阅读了ArduPilot的底层代码后终于找到了原因. 原代码(注为了表达主要问题对代码进行了省略): /// -*- tab-width: 4; Mode: C++; c-basic-offset: 4; indent-tabs-mode

使用USBASP给Arduino烧写bootloader教程

源:使用UsbAsp给UNO烧写bootloader ATMEGA16U2.ATMEGA328P固件烧写教程 arduino板由于操作不发导致固件损坏,或者想更新固件怎么办?今天给大家介绍一下如何使用UsbAsp烧写bootloader.个人认为,此种方法比使用TinyIsp要方便并且成本更低. 首先确保手上有一个USBASP下载器,某宝上一搜一大堆,下面以TSROBOT的兼容型UNO板,分别介绍mega16u2的固件和mega328p的固件烧写. _______________________

Jlink烧写图文教程

,点击安装          , 插上jlink,安装驱动后,红灯一直亮                                                                     (mini2440为例) (jz2440v2为例) 2. 打开jflash(安装好驱动就有) 3.打开百问网提供的配置文件s3c2440.jflash 打开后是这样         的 点target->connect,成功出现 4. 打开u-boot. bin ,打开后是这样的 5. 点

beaglebone black教程2-使用TF卡烧写debian系统到eMMC内部

关于beagleone系统烧写的教程比较多,和树莓派相比beaglebone有一个优点,就是板子上面出厂自带操作系统,那是因为我们的beaglebone black上面有一个2g大小的eMMC(可以理解为电脑硬盘差不都的东西),我们的beaglebone的出厂默认的操作系统就存在这里,据说现在最新的板子好像有4G eMMC版本的了. 这样的话beaglebone支持两种操作系统的安装载体,一种是直接将操作系统装在TF卡上面,还有一种当然是将操作系统安装到eMMC中,我下面要说的是将操作系统安装到

反正你们写的都是没有即时演示的教程,我为什么不去看官方文档?

我就拿Vue举个栗子. Vue.js是什么,我想你多半知道,不然你也不会打开这篇文章. 这几天看到写Vue教程的文章突然多起来了.不过,就我所见,在这里发表的所有教程文章,都不支持即时演示,顶多有点儿自己画的图片之类的点缀一下.那么,请问您的文章和官网的交互式教程相比有什么优势?高级技巧或者独创的tricks就算了,那些写基础教程的作者们,您的目标读者全是不看官方文档,吃不下饼干非得您给嚼碎了再喂的那种蠢驴吗? 但是! 看完这篇文章,你至少可以在你的教程里加入一些简单的Vue交互(或者别的骚东西

新手教程:建立网站的全套流程与详细解释

转自:http://yihui.name/cn/2009/06/how-to-build-a-website-as-a-dummy/ 你要是Google这个话题,得到的结果八成都是广告——他们都会告诉你,“嘿,我(或某公司)这里可以建网站,傻瓜式的哟,快来投奔我吧!”新手一般都觉得建网站是一件超级复杂的事情,于是很天真很无邪地进了圈套,到最后还乐呵呵帮人数钱.傻瓜式的东西就如它的名字一样,只是为傻瓜准备的,要格外小心. 我正式接触计算机在2002年,接触网站建设在2003年,想想时日也不短了,虽

《2015最新Android基础入门教程》完结散花~

<2015最新Android基础入门教程>完结散花~ 标签(空格分隔): 反思小结 引言: 从六月底就开始编写这套教程,历时将近五个多月,今天终于写完了,全套教程正文部分148篇, 十大章,从基本UI控件到四大组件,Intent,Fragment,事件处理,数据存储,网络编程,绘图与动画, 多媒体,系统服务等都进行了详细的讲解!代码都是都是在Android Studio上进行编写的,全文 采用Markdown,行文结构清晰,还结合了实际开发中一些常见的问题进行了剖析-由于个人能力的局限, 虽然

如何写好软件文档

今天看到一篇介绍写作技术文档的文章,试着翻译了一下,翻得不好,请大家帮忙改正.正文如下: 我不知道是不是有人会将阅读或书写技术文档当做爱好.虽然很讨厌这样做,但是通常为了解决问题或介绍一个技术产品,我们不得不去做这些事情. 要想写好文档很难.技术文档有几种形式:基本概览,高级概览,一步一步的演示,自动生成的文档,等等.考虑下不同用户对你的文档的需求情况:不同的需求,不同的技术,不同的学习风格.你将会发现,没有一种格式能同时适应所有人. 受众情况 在写项目文档的时候,你首先要考虑到的是读者.最终用

fullpage.js简单教程(一)

最近准备做一个全屏滚动的网页,在网上搜了一堆教程,结果大多都是一些很笼统的使用方法,对我这种耐心不超过3秒的笨蛋来说,很晦涩很笼统,所以打算边研究边自己写个教程,有什么不懂的,我再回来翻看笔记也方便O(∩_∩)O哈哈~ 经常看到一些全屏网站,看着就很高端大气上档次,想实际操作的话,可以试着使用fullpage.js这个基于jquery的插件,轻量又很方便. 功能: 支持鼠标滚动 支持前进后退和键盘控制 多个回调函数 支持手机.平板触摸事件 支持 CSS3 动画 支持窗口缩放 窗口缩放时自动调整