我遵循Spring.io 构建RESTful Web服务的官方指南
简而言之,我遵循上面的指南,但使用Tomcat进行部署和执行。
我已经看了一些SO关于这个问题的问题和答案。Spring Boot应用程序:找不到类型为的返回值的转换器
以及其他一些。
虽然我没有setter,但Greeting类中有getter方法。这正是课堂在指南上的表现。
我尝试在pom.xml上添加fasterxml-json依赖项,但错误消息是一样的。
我的所有设置都与指南完全相同,只是应用程序是通过dispatch-servlet.xml而不是主方法引导的。
web.xml
<servlet>
<servlet-name>greeting</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>greeting</servlet-name>
<url-pattern>/greeting/*</url-pattern>
</servlet-mapping>
greeting-servlet.xml
<context:component-scan base-package="com.test" />
就是这样。所有其他的课程都和指南写得一模一样。带有@RestController而没有@ResponseBody,因为@RestController是根据指南本身与@Controller和@Response Body一起推出的。
这是我的错误信息。
WARNING: Failed to write HTTP message: org.springframework.http.converter.HttpMessageNotWritableException: No converter found for return value of type: class com.test.Greeting
我不认为这是getter的问题(我肯定有)。没有fasterxml依赖关系也不是问题所在。
我错过了什么?
您肯定需要主要方法:
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
@SpringBootApplication
注释的作用比您想象的要大。最重要的是它调用@EnableAutoConfiguration
。这是用来计算你在项目中做的其他依赖项。在您的情况下,该注释将配置Jackson将Java对象解析为JSON。
直接从JavaDoc:
启用Spring应用程序上下文的自动配置,尝试猜测和配置您可能需要的bean。自动配置类通常基于类路径应用以及你定义了什么豆子。例如,如果您tomcat-embedded.jarTomcatEmbeddedServlet ContainerFactory(除非您已定义自己的EmbeddedServlet ContainerFactory bean)。
如果您仍然认为创建一个war文件是个好主意,请检查这是否可以帮助您使用纯Spring设置Jackson。
编辑:如何在没有Tomcat的情况下运行Spring Boot
你可以看看这个,文档说这样做:
..
<packaging>war</packaging>
..
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
理论上,你应该可以去,但事实可能并非如此,所以请查看Spring的示例项目。
这些人也有一些问题,所以看看它是否也影响到你。