Java 向gs rest服务示例项目添加spring数据rest后的依赖关系问题
我正在用Spring试验RESTfulWeb服务,我的起始项目是Spring的。当我点击Java 向gs rest服务示例项目添加spring数据rest后的依赖关系问题,java,maven,spring-mvc,spring-boot,spring-data-rest,Java,Maven,Spring Mvc,Spring Boot,Spring Data Rest,我正在用Spring试验RESTfulWeb服务,我的起始项目是Spring的。当我点击http://localhost:8080/greeting我得到{“id”:1,“content”:“你好,世界!”} 问题是,当我在我的pom.xml中将依赖项添加到spring data rest core和spring data rest webmvc时,应用程序不再工作。当我点击http://localhost:8080/greeting我发现以下错误: Whitelabel Error Page
http://localhost:8080/greeting
我得到{“id”:1,“content”:“你好,世界!”}
问题是,当我在我的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
当我删除Dependencies时,应用程序再次正常工作,是什么导致此问题?
这是我的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>
4.0.0
org.springframework
gs休息服务
0.1.0
org.springframework.boot
spring启动程序父级
1.1.5.1发布
战争
4.0.5.1发布
1.1.4.1发布
1.7
8.1.8.v20121106
2.1.2.1发布
org.springframework.boot
SpringBootStarterWeb
${spring.boot.version}
org.springframework.data
spring数据rest内核
${spring.data.rest.version}
org.springframework.data
spring数据rest webmvc
${spring.data.rest.version}
朱尼特
朱尼特
3.8.1
测试
org.apache.maven.plugins
maven编译器插件
3
${jdk.version}
${jdk.version}
org.mortbay.jetty
jetty maven插件
${jetty.version}
事实证明,我必须向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>
org.codehaus.jackson
:
然后,使用@ImportResource(“beans.xml”)
将beans.xml添加到应用程序.java,结果是我必须向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>
org.codehaus.jackson
:
然后,使用@ImportResource(“beans.xml”)
将beans.xml添加到应用程序.java,Spring Boot为Spring数据REST提供了一个专用的启动器:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-rest</artifactId>
</dependency>
org.springframework.boot
弹簧启动启动器数据rest
Spring Boot为Spring Data REST提供了专用启动器:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-rest</artifactId>
</dependency>
org.springframework.boot
弹簧启动启动器数据rest
您正在使依赖项和配置变得复杂。正如@OliverGierke已经提到的,使用以下启动程序而不是单个依赖项
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-rest</artifactId>
</dependency>
这将创建一个可执行jar,您可以使用java-jar.jar
运行它。它还应该具有您需要的所有依赖项,包括JSON(un)编组的jackson,这是spring boot starter web的依赖项
带有@EnableAutoConfiguration
的Spring引导将检测Spring MVC和Jackson,并对其进行正确配置。Spring数据REST也是如此。您不需要自己处理xml(或战争档案)
我删除了Jetty,如果你想使用它,请检查Spring Boot如何做到这一点。你正在使依赖项和配置变得复杂。正如@OliverGierke已经提到的,使用以下启动程序而不是单个依赖项
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-rest</artifactId>
</dependency>
这将创建一个可执行jar,您可以使用java-jar.jar
运行它。它还应该具有您需要的所有依赖项,包括JSON(un)编组的jackson,这是spring boot starter web的依赖项
带有@EnableAutoConfiguration
的Spring引导将检测Spring MVC和Jackson,并对其进行正确配置。Spring数据REST也是如此。您不需要自己处理xml(或战争档案)
如果您想使用Jetty,我将其拆下。请检查弹簧靴,了解如何执行此操作。我建议按照第一个答案提出的建议进行操作。添加启动程序并使用spring boots自动配置功能来检测spring数据REST,并让它自行配置。@EnableAutoConfiguration
已经像在原始项目中一样添加。这样,您就不需要注释方法HandlerAdapter
,它也有点不推荐使用,并被替换为RequestMethodHandlerAdapter
由@EnableWebMvc
自动注册,如果spring boot检测到Sprnig MVC,则默认情况下启用。如果检测到,Jackson是自动配置的,所以基本上不需要您所做的一切。(您可能还想使用jackson2,Spring Boot已经为其配置了依赖项)。添加启动程序并使用spring boots自动配置功能来检测spring数据REST,并让它自行配置。@EnableAutoConfiguration
已经像在原始项目中一样添加。这样,您就不需要注释方法HandlerAdapter
,它也有点不推荐使用,并被替换为RequestMethodHandlerAdapter
由@EnableWebMvc
自动注册,如果spring boot检测到Sprnig MVC,则默认情况下启用。如果检测到,Jackson是自动配置的,所以基本上不需要您所做的一切。(您可能还想使用jackson2,Spring Boot已经为其配置了依赖项)。添加此依赖项时,我有一个无法自动连接字段:private final java.util.List org.springframework.Boot.autoconfigure.web.HttpMessageConvertersAutoConfiguration.converters;嵌套异常是java.lang.NoClassDefFoundError:org/codehaus/jackson/JsonProcessingException
。听起来我仍然需要像下面那样为Jackson添加依赖项!看起来您有一些不匹配的版本,因为您提到的类只依赖于