[英]Dependency issue after adding spring-data-rest to gs-rest-service sample project
我正在嘗試使用Spring的RESTful Web服務,我的起始項目是Spring的gs-rest-service 。 當我點擊http://localhost:8080/greeting
時,項目運行正常,我得到{“ id”:1,“ content”:“ Hello,World!”}。
問題是,當我在pom.xml
中將依賴項添加到spring-data-rest-core
和spring-data-rest-webmvc
,該應用程序不再起作用。 當我打http://localhost:8080/greeting
,出現以下錯誤:
Whitelabel Error Page
This application has no explicit mapping for /error, so you are seeing this as a fallback.
Tue Aug 12 12:27:28 CEST 2014
There was an unexpected error (type=Not Acceptable, status=406).
Could not find acceptable representation
當我刪除依賴關系時,應用程序又可以正常工作了,這是什么原因引起的? 這是我的pom.xml
:
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.springframework</groupId>
<artifactId>gs-rest-service</artifactId>
<version>0.1.0</version>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.1.5.RELEASE</version>
</parent>
<packaging>war</packaging>
<properties>
<spring.version>4.0.5.RELEASE</spring.version>
<spring.boot.version>1.1.4.RELEASE</spring.boot.version>
<jdk.version>1.7</jdk.version>
<jetty.version>8.1.8.v20121106</jetty.version>
<spring.data.rest.version>2.1.2.RELEASE</spring.data.rest.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>${spring.boot.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-rest-core</artifactId>
<version>${spring.data.rest.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-rest-webmvc</artifactId>
<version>${spring.data.rest.version}</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.0</version>
<configuration>
<source>${jdk.version}</source>
<target>${jdk.version}</target>
</configuration>
</plugin>
<plugin>
<groupId>org.mortbay.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId>
<version>${jetty.version}</version>
</plugin>
</plugins>
</build>
</project>
Spring Boot提供了專用於Spring Data REST的啟動器:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-rest</artifactId>
</dependency>
您正在使依賴關系和配置變得復雜。 正如@OliverGierke已經提到的那樣,請使用以下啟動程序代替單個依賴項。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-rest</artifactId>
</dependency>
另外,您已經在使用spring-boot-starter-parent
因此您不需要spring boot版本是您配置的一些其他屬性。 代替jdk.version
使用java.version
,僅此java.version
。 留下以下pom。 (這還添加了spring-boot插件)。
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.springframework</groupId>
<artifactId>gs-rest-service</artifactId>
<version>0.1.0</version>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.1.5.RELEASE</version>
</parent>
<packaging>jar</packaging>
<properties>
<java.version>1.7</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-rest</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
這將創建一個可執行jar,您可以使用java -jar <your-jar-name-here>.jar
。 這也應該具有您需要的所有依賴項,包括用於JSON(un)編組的jackson,這是spring-boot-starter-web
的依賴項。
使用@EnableAutoConfiguration
Spring Boot將檢測Spring MVC和Jackson,並對其進行正確的配置。 Spring Data REST也是如此。 您不必自己弄亂xml(或戰爭檔案)。
如果要使用Jetty,我將其刪除了,請查看Spring Boot 參考指南中有關如何執行此操作的信息。
事實證明,我必須向Jackson添加依賴項:
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-core-asl</artifactId>
<version>1.9.13</version>
</dependency>
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-asl</artifactId>
<version>1.9.13</version>
</dependency>
並聲明一個以下bean,如Spring MVC-HttpMediaTypeNotAcceptableException所述 :
<context:annotation-config/>
<bean id="jacksonMessageConverter" class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">
</bean>
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
<property name="messageConverters">
<list>
<ref bean="jacksonMessageConverter"/>
</list>
</property>
</bean>
然后,使用@ImportResource("beans.xml")
添加到Application.java中 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.