在Spring 5 webmvc Rest服务指南之后 - 找不到类型返回值的转换器

时间:2017-10-24 17:58:57

标签: spring spring-mvc spring-restcontroller

我正在关注来自Spring.io的the official guide for Building a RESTful Web Service

简而言之,我正在遵循上述指南,但使用Tomcat进行部署和执行。

我已经查看了有关此问题的一些问题和答案。 Spring Boot Application: No converter found for return value of type

和其他一些人。

虽然我没有setter,但我在Greeting类中有getter方法。这正是本课程的指南。

我尝试在我的pom.xml上添加了fastxml json依赖项,但错误信息是相同的。

除了应用程序是由dispatch-servlet.xml而不是main方法引导之外,我的所有设置都与指南完全相同。

的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>

问候-servlet.xml中

<context:component-scan base-package="com.test" />

就是这样。所有其他类的编写与指南完全相同。使用@RestController并且没有@ResponseBody,因为@RestController根据指南本身推出@Controller和@ResponseBody。

这是我的错误消息。

WARNING: Failed to write HTTP message: org.springframework.http.converter.HttpMessageNotWritableException: No converter found for return value of type: class com.test.Greeting

我不认为这是吸气剂的问题(我肯定有它们)。 也没有没有fastxml依赖的问题。

我错过了什么?

1 个答案:

答案 0 :(得分:1)

你肯定需要主要的方法:

@SpringBootApplication
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

@SpringBootApplication注释比您想象的要多。最重要的是它调用@EnableAutoConfiguration。这用于确定您在项目中执行的其他依赖项。在您的情况下,注释将配置Jackson以将您的Java对象解析为JSON。

直接来自JavaDoc:

  

启用Spring Application Context的自动配置,   试图猜测和配置你可能需要的bean。   通常根据您的类路径应用自动配置类   以及你定义的豆子。例如,如果你有   你可能想要一个类路径上的tomcat-embedded.jar   TomcatEmbeddedServletContainerFactory(除非你已经定义了你的   拥有EmbeddedServletContainerFactory bean)。

<小时/> 如果您仍然认为创建一个war文件是一个好主意,请检查this是否可以帮助您使用普通的Spring设置Jackson。

<小时/> 编辑:如何在没有Tomcat的情况下运行Spring Boot
您可以check this out,文档说这样做:

    ..
    <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>

理论上你应该好好去,但可能不是这样,所以看看sample project from Spring

这些人也遇到了一些问题,所以check out if it also effects you