我最近开始使用Java为Podcastpedia.org和JAX-RS实现构建公共的REST API,我选择了Jersey ,因为我发现它“自然”且功能强大-您可以通过遵循教程了解更多信息-带有Jersey和Spring的Java中的REST API设计和实现。 由于Podcastpedia.org是由Spring MVC支持的Web应用程序,因此我想将这两个框架都集成在podcastpedia-web中 ,以利用项目中已经存在的后端服务功能。 无论如何,这篇简短的帖子将介绍我为使两个框架之间的集成起作用而必须采取的步骤。
框架版本
当前使用的版本:
Spring和Jersey二手版本
<properties>
<spring.version>4.1.0.RELEASE</spring.version>
<jersey.version>2.14</jersey.version>
</properties>
项目依赖
Jersey Spring扩展名必须出现在项目的类路径中。 如果使用的是Maven,请将其添加到项目的pom.xml
文件中:
依赖关系片段– pom.xml
<!-- Jersey-Spring http://mvnrepository.com/artifact/org.glassfish.jersey.ext/jersey-spring3/2.4.1 -->
<dependency>
<groupId>org.glassfish.jersey.ext</groupId>
<artifactId>jersey-spring3</artifactId>
<version>${jersey.version}</version>
<exclusions>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
</exclusion>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
</exclusion>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-json-jackson</artifactId>
<version>${jersey.version}</version>
<exclusions>
<exclusion>
<groupId>com.fasterxml.jackson.jaxrs</groupId>
<artifactId>jackson-jaxrs-base</artifactId>
</exclusion>
<exclusion>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
</exclusion>
<exclusion>
<groupId>com.fasterxml.jackson.jaxrs</groupId>
<artifactId>jackson-jaxrs-json-provider</artifactId>
</exclusion>
</exclusions>
</dependency>
注意:我已经明确排除了Spring核心和Jackson实施库,因为它们已经以首选版本导入了项目。
Web.xml配置
在web.xml
,除了Spring MVC servlet配置之外,我还添加了jersey-servlet配置,该配置将映射以/api/
开头的所有请求:
来自web.xml的配置代码段
<servlet>
<servlet-name>Spring MVC Dispatcher Servlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath:spring/application-context.xml
</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Spring MVC Dispatcher Servlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>jersey-serlvet</servlet-name>
<servlet-class>
org.glassfish.jersey.servlet.ServletContainer
</servlet-class>
<init-param>
<param-name>javax.ws.rs.Application</param-name>
<param-value>org.podcastpedia.web.api.JaxRsApplication</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>jersey-serlvet</servlet-name>
<url-pattern>/api/*</url-pattern>
</servlet-mapping>
好吧,差不多了...如果您有任何问题,请在下面的讨论中给我留言或发表评论。
在接下来的文章中,我将通过展示如何使用jQuery调用REST公共API的一种方法,动态加载播客的最新剧集来保持这种集成的结果,敬请关注。
翻译自: https://www.javacodegeeks.com/2015/01/how-to-integrate-jersey-in-a-spring-mvc-application.html