我正在关注来自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依赖的问题。
我错过了什么?
答案 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
..
<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。