이 코드로
@RequestMapping(value = "/bar/foo", method = RequestMethod.GET)
public ResponseEntity<foo> foo() {
Foo model;
...
return ResponseEntity.ok(model);
}
}
다음 예외가 발생합니다.
java.lang.IllegalArgumentException: No converter found for return value of type
내 생각 엔 Jackson이 없기 때문에 객체를 JSON으로 변환 할 수 없다는 것입니다. 잭슨이 스프링 부츠에 내장되었다고 생각했기 때문에 왜 그런지 모르겠습니다.
그런 다음 Jackson을 pom.xml에 추가하려고 시도했지만 여전히 동일한 오류가 있습니다.
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.4.3</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.4.3</version>
</dependency>
이 작업을 수행하려면 스프링 부트 속성을 변경해야합니까?
감사합니다
답변
문제는 중첩 된 개체 중 하나에이었다 Foo
어떤을하지 않았다getter/setter
답변
pom.xml에 아래 종속성을 추가하십시오.
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.10.0.pr3</version>
</dependency>
답변
오류 메시지에 언급 된 빈 내부에 누락 된 getter / setter를 추가하십시오.
답변
사용 @ResponseBody
하고 getter/setter
. 문제가 해결되기를 바랍니다.
@RequestMapping(value = "/bar/foo", method = RequestMethod.GET)
@ResponseBody
public ResponseEntity<foo> foo() {
업데이트하십시오 mvc-dispatcher-servlet.xml
:
<mvc:annotation-driven>
<mvc:message-converters>
<bean class="org.springframework.http.converter.StringHttpMessageConverter"/>
<bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"/>
</mvc:message-converters>
</mvc:annotation-driven>
답변
내 경우에는 스프링 프레임 워크가 중첩 된 객체의 속성을 가져올 수 없기 때문에 문제가 발생했습니다. 게터 / 세터는 해결하는 한 가지 방법입니다. 속성을 공개하는 것은 이것이 실제로 문제인지 확인하는 또 다른 빠르고 더러운 솔루션입니다.
답변
나는 똑같은 문제가 있었고 불행히도 getter 메서드를 추가하거나 jackson 종속성을 추가하여 해결할 수 없었습니다.
그런 다음 공식 Spring Guide를보고 여기에 제공된 예제를 따랐습니다-https: //spring.io/guides/gs/actuator-service/ 여기서 예제는 반환 된 객체를 JSON 형식으로 변환하는 것을 보여줍니다.
그런 다음 다시 자신의 프로젝트를 만들었습니다. 이번에는 종속성을 추가하고 pom.xml 에있는 플러그인을 빌드한다는 차이점이 있습니다. 위에서 언급 한 공식 Spring Guide 예제 파일에있는 .
XML 파일의 수정 된 종속성 및 빌드 부분은 다음과 같습니다!
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
위의 링크에서 동일한 것을 볼 수 있습니다.
그리고 마술처럼, 적어도 저에게는 효과가 있습니다. 따라서 이미 다른 옵션을 모두 사용했다면 저와 마찬가지로 이것을 시도해 볼 수 있습니다.
참고로 이전 프로젝트에 종속성을 추가하고 Maven이 프로젝트 항목을 설치 및 업데이트 할 때 작동하지 않았습니다. 그래서 처음부터 다시 프로젝트를 만들어야했습니다. 저의 프로젝트는 예제 프로젝트이므로 신경 쓰지 않았습니다.하지만 당신도 찾아보고 싶을 것입니다!
답변
구성 클래스의 @EnableWebMvc 주석으로 문제가 해결되었습니다. (Spring 5, web.xml 없음, AbstractAnnotationConfigDispatcherServletInitializer에 의해 초기화 됨)