【问题标题】:How to define a bean for PersistentEntityResourceAssembler?如何为 PersistentEntityResourceAssembler 定义一个 bean?
【发布时间】:2017-05-10 13:45:42
【问题描述】:

当我尝试在我的自定义控制器中自动装配 PersistentEntityResourceAssembler 时,它给了我以下错误。

Description:

Field resourceAssembler in api.controller.IslandController required a bean of type 'org.springframework.data.rest.webmvc.PersistentEntityResourceAssembler' that could not be found.

Action:

Consider defining a bean of type 'org.springframework.data.rest.webmvc.PersistentEntityResourceAssembler' in your configuration.

这是我的控制器实现:

@RestController
public class IslandController {

    @Autowired
    private IslandRepository islandRepo;

    @Autowired
    private PagedResourcesAssembler pagedResourcesAssembler;

    @Autowired
    private PersistentEntityResourceAssembler resourceAssembler;

    @RequestMapping(method = GET, value = "islands")
    public ResponseEntity<?> getAllIslands(Pageable page) {
        Page<Island> islandList = islandRepo.findAll(page);
        return new ResponseEntity<>(pagedResourcesAssembler.toResource(islandList, resourceAssembler), HttpStatus.OK);
    }

那么如何为 PersistentEntityResourceAssembler 定义一个 bean?

【问题讨论】:

    标签: spring spring-mvc spring-boot spring-data-rest


    【解决方案1】:

    这不是解决这个问题的方法:去掉 @Autowired PersistentEntityResourceAssembler 并将 PersistentEntityResourceAssembler 参数传递给您的方法,让 Spring 发挥它的魔力

    @RequestMapping(method = GET, value = "islands")
    public ResponseEntity<?> getAllIslands(Pageable page,
            PersistentEntityResourceAssembler resourceAssembler) {
        Page<Island> islandList = islandRepo.findAll(page);
    
        return new ResponseEntity<>(pagedResourcesAssembler.toResource(islandList, resourceAssembler), HttpStatus.OK);
    }
    

    【讨论】:

    • 是否可以在配置文件中为 PersistentEntityResourceAssembler 定义一个 bean?
    猜你喜欢
    • 1970-01-01
    • 2020-01-25
    • 1970-01-01
    • 1970-01-01
    • 2020-05-24
    • 2017-04-24
    • 2014-07-11
    • 2016-02-07
    • 2021-11-25
    相关资源
    最近更新 更多