无法实例化 Pageable bean [英] Failed to instantiate Pageable bean
问题描述
我使用 Spring 4.1.6.RELEASE 和 Spring Data Jpa 1.8.0.RELEASE.我在创建 org.springframework.data.domain.Pageable bean 时遇到问题.它在我的控制器中使用:
I use Spring 4.1.6.RELEASE and Spring Data Jpa 1.8.0.RELEASE. I have a problem with org.springframework.data.domain.Pageable bean creation. It is used in my controller:
@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 配置:
Also I have a next xml configurations in my application context:
<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>
最后我做了一个来自客户的下一个请求:
And finaly I do A next requsr from the client:
$.ajax({
type: "GET",
url: "getProducts?page=0&size=100",
.....
在 tomcat 日志中我看到下一个:
In tomcat log I see next:
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)
....................
请帮我解决这个问题,谢谢!
Please help me to resolve this issue, thanks!
推荐答案
实现此功能的最简单方法是在您的配置中设置 @EnableSpringDataWebSupport
.或者,在基于纯 XML 的配置中,将 SpringDataWebConfiguration
声明为 Spring bean.
The easiest way to get this working is to set @EnableSpringDataWebSupport
in your configuration. Alternatively, in a pure XML based configuration, declare SpringDataWebConfiguration
as Spring bean.
这将确保正确注册必要的 HandlerMethodArgumentResolver
.
That will make sure the necessary HandlerMethodArgumentResolver
will be registered correctly.
这篇关于无法实例化 Pageable bean的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!