[SPRING] Pageable bean을 인스턴스화하지 못했습니다.
SPRINGPageable bean을 인스턴스화하지 못했습니다.
나는 Spring 4.1.6.RELEASE와 Spring Data Jpa 1.8.0.RELEASE를 사용한다. 나는 org.springframework.data.domain.Pageable 빈 생성에 문제가있다. 내 컨트롤러에서 사용됩니다.
@Controller
public class ItemsController {
@Autowired
ProductService itemsService;
@RequestMapping(value = "/openItemsPage")
public String openItemsPage() {
return "items";
}
@RequestMapping(value = "/getItems", method = RequestMethod.GET)
@ResponseBody
public Item[] getItems(Pageable pageable) {
return itemsService.getItems(pageable);
}
}
또한 내 응용 프로그램 컨텍스트에서 다음 xml 구성이 있습니다.
<context:component-scan base-package="com.mobox.controller" />
<mvc:annotation-driven>
<mvc:argument-resolvers>
<beans:bean id="sortResolver"
class="org.springframework.data.web.SortHandlerMethodArgumentResolver" />
<beans:bean
class="org.springframework.data.web.PageableHandlerMethodArgumentResolver">
<beans:constructor-arg ref="sortResolver" />
</beans:bean>
</mvc:argument-resolvers>
</mvc:annotation-driven>
마지막으로 고객으로부터 다음 요청을받습니다.
$.ajax({
type: "GET",
url: "getProducts?page=0&size=100",
.....
Tomcat 로그에서 나는 다음을 본다 :
SEVERE: Servlet.service() for servlet [appServlet] in context with path [/a2delivery-web] threw exception [Request processing failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.data.domain.Pageable]: Specified class is an interface] with root cause
org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.data.domain.Pageable]: Specified class is an interface
at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:101)
at org.springframework.web.method.annotation.ModelAttributeMethodProcessor.createAttribute(ModelAttributeMethodProcessor.java:137)
at org.springframework.web.servlet.mvc.method.annotation.ServletModelAttributeMethodProcessor.createAttribute(ServletModelAttributeMethodProcessor.java:80)
at org.springframework.web.method.annotation.ModelAttributeMethodProcessor.resolveArgument(ModelAttributeMethodProcessor.java:106)
at org.springframework.web.method.support.HandlerMethodArgumentResolverComposite.resolveArgument(HandlerMethodArgumentResolverComposite.java:77)
at org.springframework.web.method.support.InvocableHandlerMethod.getMethodArgumentValues(InvocableHandlerMethod.java:162)
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:129)
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:110)
....................
이 문제를 해결할 수 있도록 도와주세요. 감사합니다.
해결법
-
==============================
1.이 작업을 수행하는 가장 쉬운 방법은 구성에서 @EnableSpringDataWebSupport를 설정하는 것입니다. 또는 순수 XML 기반 구성에서 SpringDataWebConfiguration을 Spring bean으로 선언하십시오.
이 작업을 수행하는 가장 쉬운 방법은 구성에서 @EnableSpringDataWebSupport를 설정하는 것입니다. 또는 순수 XML 기반 구성에서 SpringDataWebConfiguration을 Spring bean으로 선언하십시오.
그러면 필요한 HandlerMethodArgumentResolver가 올바르게 등록되었는지 확인할 수 있습니다.
-
==============================
2.테스트 클래스에 다음을 추가하십시오.
테스트 클래스에 다음을 추가하십시오.
@Inject private PageableHandlerMethodArgumentResolver pageableArgumentResolver;
PageableHandlerMethodArgumentResolver
MockMvc 설정 중에 구성하십시오 :
@Before public void setup() { ... this.mockMvc = MockMvcBuilders.standaloneSetup(resource) .setCustomArgumentResolvers(pageableArgumentResolver) .build(); }
-
==============================
3.Tom Rossom의 답장에 추가하기 위해 @RunWith (MockitoJUnitRunner.class)를 사용하면 mockMvc를 초기화 할 때 PageoreHandlerMethodArgumentResolver의 인스턴스를 만들 수 있습니다 (Loren의 언급처럼) .Eg
Tom Rossom의 답장에 추가하기 위해 @RunWith (MockitoJUnitRunner.class)를 사용하면 mockMvc를 초기화 할 때 PageoreHandlerMethodArgumentResolver의 인스턴스를 만들 수 있습니다 (Loren의 언급처럼) .Eg
mockMvc = MockMvcBuilders.standaloneSetup(restController) .setCustomArgumentResolvers(new PageableHandlerMethodArgumentResolver()) .build();
-
==============================
4.getItems 메소드에서 사용 된 Pageable은 인터페이스이며 Spring은이를 인스턴스화 할 수 없다.
getItems 메소드에서 사용 된 Pageable은 인터페이스이며 Spring은이를 인스턴스화 할 수 없다.
당신은
from https://stackoverflow.com/questions/30057262/failed-to-instantiate-pageable-bean by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] 새 창에서 pdf 스트림보기 (0) | 2019.01.17 |
---|---|
[SPRING] PreAuthorize가 컨트롤러에서 작동하지 않습니다. (0) | 2019.01.17 |
[SPRING] 스프링 보안 : 초기 타겟 URL을 얻는 방법 (0) | 2019.01.17 |
[SPRING] PropertyDescriptor의 동작이 Java 1.6에서 1.7로 변경된 이유는 무엇입니까? (0) | 2019.01.17 |
[SPRING] Spring @RequestBody - 다른 유형의 목록을 포함하지만 (동일한 인터페이스) (0) | 2019.01.17 |