遵循Spring5webmvc Rest服务指南-找不到类型的返回值的转换器



我遵循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的示例项目。

这些人也有一些问题,所以看看它是否也影响到你。

相关内容

  • 没有找到相关文章

最新更新