我有点被这个困扰。我看过的例子和我在网上找到的所有东西都说
public ResponseEntity<StandaloneTerminals> getTerminalsBySearchTerm(
@PathParam("term") String term, @PageableDefault(page = 0, size = 25) Pageable pageRequest) {
Page<StandaloneTerminal> terminals;
...
}
应该工作。在
的单元测试中运行时@RunWith(SpringRunner.class)
@WebMvcTest(TerminalController.class)
public class TerminalControllerTest {
...
@Test
public void getAll() throws Exception {
MvcResult result = this.mockMvc.perform(get("/terminals")).andDo(print())
.andExpect(status().is(200))
.andReturn();
...
}
可以!
但是,实际上将Postman指向该端点会导致
org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.data.domain.Pageable]: Specified class is an interface
我已经阅读了有关此问题的有关Stack Overflow的多个问题,并且为了安全起见,尝试将@EnableSpringDataWebSupport添加到新的WebConfig类以及在不同的时间添加到AppConfig和Controller中。 Spring继续拒绝实例化此bean。
编辑:根据要求配置应用程序:
@SpringBootApplication
@EnableSpringDataWebSupport
public class AppConfig {
public static void main(String[] args) {
SpringApplication.run(AppConfig.class, args);
}
}
答案 0 :(得分:1)
我们始终无法弄清Spring为什么无法实例化该bean的原因,但是我们通过使用默认构造函数实现了我们自己的Pageable实现,发现了一种非侵入性的解决方法。到目前为止,我们还没有运气让Sort以这种方式工作。
答案 1 :(得分:0)
尝试更改
@PageableDefault(page = 0, size = 25) Pageable pageRequest
到
@PageableDefault(page = 0, size = 25) @RequestParameter(required=false) PageRequest pageRequest