将Jersey与Spring整合

Spring提供了很多好处,并通过其依赖项注入机制,应用程序生命周期管理和Hibernate支持(仅举几例)促进了最佳实践。 另外,当您想拥有干净的类似于REST的服务器端JSON Api时,我发现Jersey非常方便。 本文简要介绍了如何将两者集成在一起。

在我的业余时间里,我目前正在尝试恢复以前从未退出私有测试版的一个私有项目(一旦发布,我会写更多的内容)。 该项目包含一个JavaScript富客户端界面以及在Google AppEngine上托管的Java服务器“后端”。 我目前正在完全重写它,因此我从在服务器端创建Jersey REST Api干净地开始,它以JSON公开数据。 此类在泽西岛暴露的类的示例如下:

@Path("/sourcecodeitems")
public class SourceCodeItemGateway {	...@GET@Produces(MediaType.APPLICATION_JSON)public List<sourcecodeitemdto> index(){ArrayList<sourcecodeitemdto> listOfItems = new ArrayList<sourcecodeitemdto>();for (SourceCodeItem item : sourceCodeItems) {listOfItems.add(new SourceCodeItemDTO(item));}return listOfItems;}...	
}

相应的web.config如下所示:

<web-app version="2.5" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemalocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"><servlet><servlet-name>Jersey Web Application</servlet-name><servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class><init-param><param-name>com.sun.jersey.config.property.packages</param-name><param-value>com.jsdev.myproject.service</param-value></init-param><init-param><param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name><param-value>true</param-value></init-param><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>Jersey Web Application</servlet-name><url-pattern>/backend/*</url-pattern></servlet-mapping><welcome-file-list><welcome-file>welcome.jsp</welcome-file></welcome-file-list>
</web-app>

第7行指示您的Jersey资源所在的软件包, 第10行激活您的POJO到Json的自动映射功能。

与Spring整合

为了将Jersey与Spring集成,您首先需要包括Jersey软件包下载随附的jersey-spring- <version> .jar 。 将其包括在您的构建路径中。 然后,您可以使用Spring批注(@Component)配置Jersey资源(上面的SourceCodeItemGateway),或像…一样基于xml进行配置。

<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.springframework.org/schema/beans" xsi:schemalocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"><bean class="com.jsdev.mydevbook.service.SourceCodeItemGateway" name="sourceCodeItemGateway"><property name="pingService" ref="pingService"></property></bean><bean class="com.jsdev.myproject.service.PingService" id="pingService"></bean></beans>

第3行显示了Jersey资源类的bean配置以及将由Spring管理和注入的已配置依赖项(PingService)。 最后,您需要调整web.config文件以使其在带有Jersey的Spring中正确挂接:

<servlet><servlet-name>jersey-servlet</servlet-name><servlet-class>com.sun.jersey.spi.spring.container.servlet.SpringServlet</servlet-class><init-param><param-name>com.sun.jersey.config.property.packages</param-name><param-value>com.jsdev.myproject.service</param-value></init-param><init-param><param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name><param-value>true</param-value></init-param><load-on-startup>1</load-on-startup>
</servlet><servlet-mapping><servlet-name>jersey-servlet</servlet-name><url-pattern>/backend/*</url-pattern>
</servlet-mapping><context-param><param-name>contextConfigLocation</param-name><param-value>/WEB-INF/spring-service.xml/WEB-INF/spring-data.xml</param-value>
</context-param>

请注意,在第3行中 ,我们如何实例化Jersey SpringServlet。 第23和24行显示了Spring配置文件的路径。 先前显示的bean配置是spring-service.xml的摘录。 spring-data.xml应该包含与数据访问相关的所有内容。

参考:在Juri Strumpflohner的TechBlog上 ,我们的JCG合作伙伴 Juri Strumpflohner 将Jersey与Spring集成 在一起 。

相关文章 :

  • Spring3 RESTful Web服务
  • Tomcat 7 –Eclipse和Maven项目上的带有RESTeasy JAX-RS的RESTful Web服务
  • Java Code Geeks Andygene Web原型
  • Spring MVC开发–快速教程
  • jqGrid,REST,AJAX和Spring MVC集成

翻译自: https://www.javacodegeeks.com/2011/08/integrating-jersey-with-spring.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/374687.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JAVAWEB 生成excel文字在一格显示两位不变成#号

在用java生成excel的时候会发现这种问题&#xff0c; 如果是人家给的模板还好&#xff0c;如果不是模板&#xff0c;而是通过代码生成的话&#xff0c; 就需要进行处理了&#xff0c; 一个小单元格&#xff0c;如果是一位的话&#xff0c;如1-9显示没有问题&#xff0c;一旦是两…

力扣面试题 01.07. 旋转矩阵

给你一幅由 N N 矩阵表示的图像&#xff0c;其中每个像素的大小为 4 字节。请你设计一种算法&#xff0c;将图像旋转 90 度。 不占用额外内存空间能否做到&#xff1f; 代码一 思路&#xff1a;对于矩阵中第 ii 行的第 jj 个元素&#xff0c;在旋转后&#xff0c;它出现在倒数…

依赖注入–手动方式

依赖注入是一种将行为与依赖解决方案分开的技术。 用简单的话来说&#xff0c;它允许开发人员定义具有特定功能的类&#xff0c;这些功能取决于各种协作者&#xff0c;而不必定义如何获取对这些协作者的引用。 以此方式&#xff0c;实现了各个组件之间的解耦&#xff0c;并且通…

一个疏忽引发的思考!(strerror)

前几天写代码因为自己的疏忽导致一遍又一遍的Segmentation fault (core dumped)。该问题是因为strerror&#xff08;errno&#xff09;返回的指针指向非法的内存导致程序打印错误时崩溃。 尝试数次无果&#xff0c;为了进度。简单粗暴的换成了perror(str)。今天忙里偷闲&#x…

力扣面试题 01.08. 零矩阵

编写一种算法&#xff0c;若M N矩阵中某个元素为0&#xff0c;则将其所在的行与列清零 代码一思路&#xff1a; 第一次遍历时记录&#xff0c;用两个布尔类型数组标记行和列中是否有0元素&#xff1b; 第二次遍历时置零 class Solution {public void setZeroes(int[][] matr…

Java最佳实践–字符串性能和精确字符串匹配

在使用Java编程语言时&#xff0c;我们将继续讨论与建议的实践有关的系列文章&#xff0c;我们将讨论String性能调优。 我们将专注于如何有效地处理字符串创建&#xff0c; 字符串更改和字符串匹配操作。 此外&#xff0c;我们将提供我们自己的用于精确字符串匹配的最常用算法的…

mac下开发环境常用操作与命令

【1】 修改hosts文件 vim /private/etc/hosts转载于:https://www.cnblogs.com/zsmynl/p/4714492.html

keil里面填数据

编译后寄存器和堆栈的内存数据可以直接写进去的。 寄存器&#xff0c;双击就可以&#xff0c;注意里面是十六进制 堆栈&#xff0c;也是十六进制&#xff0c;八位的 00 00 00 00 &#xff0c;但这个是从右到左的&#xff0c;比如0x00000006 应该填 06 00 00 00 把数据取出来 取…

力扣498. 对角线遍历

给你一个大小为 m x n 的矩阵 mat &#xff0c;请以对角线遍历的顺序&#xff0c;用一个数组返回这个矩阵中的所有元素。 代码思路&#xff1a;以第一行和右边最后一列作为每轮的开始元素&#xff0c;先用temp存储&#xff0c;全部按 从左上到右下 的顺序遍历&#xff0c;但是…

调试生产服务器– Eclipse和JBoss展示

您是否编写有错误的代码&#xff1f; 不&#xff0c;当然不。 对于我们其余的确实会编写带有错误的代码的凡人&#xff0c;我想解决一个非常敏感的问题&#xff1a;调试在生产服务器上运行的应用程序。 因此&#xff0c;您的应用程序已准备好进行部署。 单元测试全部成功&…

ubuntu server获取并自动设置最快镜像的方法

一&#xff0c;安装方法1 add-apt-repository ppa:ossug-hychen/getfastmirrorapt-get install getfastmirror 如果添加了临时源&#xff0c;这样移除add-apt-repository --remove ppa:ossug-hychen/getfastmirror 二&#xff0c;安装方法2 wget -O getfastmirror-master.zip h…

linux之x86裁剪移植---ffmpeg的H264解码显示(420、422)

在虚拟机上yuv420可以正常显示 &#xff0c;而945&#xff08;D525&#xff09;模块上却无法显示 &#xff0c;后来验证了directdraw的yuv420也无法显示 &#xff0c;由此怀疑显卡不支持 &#xff0c;后把420转换为422显示。420显示如下&#xff1a;/* 编译命令&#xff1a;arm…

Spring依赖注入技术的发展

回顾Spring框架的历史&#xff0c;您会发现实现依赖注入的方式在每个发行版中都在增加。 如果您使用该框架已经超过一个月&#xff0c;那么在这篇回顾性文章中可能不会发现任何有趣的东西。 除了Scala中的最后一个示例&#xff0c;没有其他希望&#xff0c;这种语言在Spring中意…

JS encode decode

网上查到的全都是escape&#xff0c;和需要的编码不是一回事&#xff0c;好不容易找到的结果 保存下来以备以后使用js对文字进行编码涉及3个函数&#xff1a;escape,encodeURI,encodeURIComponent&#xff0c;相应3个解码函数&#xff1a;unescape,decodeURI,decodeURIComponen…

流媒体服务器 笔记

1.sip服务器回SBC Port Unreachable 说明转码器接收RTCP的端口没有打开 转载于:https://www.cnblogs.com/luoyinjie/p/7219359.html

力扣151. 翻转字符串里的单词

给你一个字符串 s &#xff0c;逐个翻转字符串中的所有 单词 。 单词 是由非空格字符组成的字符串。s 中使用至少一个空格将字符串中的 单词 分隔开。 请你返回一个翻转 s 中单词顺序并用单个空格相连的字符串。 没思路&#xff0c;看到的官方给的&#xff0c;简洁明了&…

Spring 3 HornetQ 2.1集成教程

通过Spring框架使用JBoss的新超高性能消息传递系统。 HornetQ是一个开放源代码项目&#xff0c;用于构建多协议&#xff0c;可嵌入&#xff0c;非常高性能的集群异步消息传递系统。 它是用Java编写的&#xff0c;并且可以在具有Java 5或更高版本运行时的任何平台上运行。 Horn…

B/S和C/S架构图解

软件&#xff1a;B/S和C/S两种架构模式。接下来用三张图片解释&#xff0c;什么是B/S什么是C/S。 图片一&#xff1a;软件架构模式 图片二&#xff1a;C/S结构模式 图片三&#xff1a;B/S结构模式 相信图解胜过冗长文字的解释&#xff0c;什么是B/S什么是C/S一目了然。 转载于:…

557. 反转字符串中的单词 III

给定一个字符串&#xff0c;你需要反转字符串中每个单词的字符顺序&#xff0c;同时仍保留空格和单词的初始顺序。 class Solution {public String reverseWords(String s) {StringBuffer res new StringBuffer();int length s.length();int i 0;while(i < length){int …

休眠陷阱

我已经使用Hibernate已有一段时间了&#xff0c;当我一段时间不使用Hibernate项目时&#xff0c;发现自己犯的错误与上次相同。 因此&#xff0c;这是我的监视清单&#xff0c;希望对其他人也有用。 实现hashCode和equals 一般而言&#xff0c;应该始终实现这些方法&#xff…