Resource 和 ControllerLinkBuilder 未找到且已弃用

RRG*_*T19 10 spring-hateoas spring-boot

我正在使用带有 HATEOAS 和 Gradle 的 Spring Boot 2.2.0.M1。

implementation 'org.springframework.boot:spring-boot-starter-hateoas'
Run Code Online (Sandbox Code Playgroud)

目前,ResourceIDE (IntelliJ IDEA 2018.3) 未找到,并ControllerLinkBuilder标记为deprecated

package com.example.restfulwebservicegradle.user;

import static org.springframework.hateoas.server.mvc.ControllerLinkBuilder.linkTo;
import static org.springframework.hateoas.server.mvc.WebMvcLinkBuilder.methodOn;

import com.example.restfulwebservicegradle.User;
import com.example.restfulwebservicegradle.UserDaoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.hateoas.server.mvc.ControllerLinkBuilder;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.support.ServletUriComponentsBuilder;

import javax.validation.Valid;
import java.net.URI;
import java.util.List;

@RestController
public class UserResource {

    @Autowired
    private UserDaoService service;

    @GetMapping("users/{id}")
    public Resource<User> retrieveUser(@PathVariable int id) {
        User user = service.findOne(id);

        if (user == null)
            throw new UserNotFoundException("id-" + id);


        // Resource not found
        Resource<User> resource = new Resource<User>(user);

        // Deprecated
        ControllerLinkBuilder linkTo = linkTo(methodOn(this.getClass()).retrieveAllUsers());

        resource.add(linkTo.withRel("all-users"));

        return resource;
    }
}
Run Code Online (Sandbox Code Playgroud)

根据 IDE 可用的导入是: 在此处输入图片说明

我该如何解决这个问题?

我的目标是Resource从 HATEOAS 中找到并使用ControllerLinkBuilder.

小智 20

最根本的变化是 Spring HATEOAS 不创建资源。这就是 Spring MVC/Spring WebFlux 所做的。我们创建超媒体的供应商中立表示。所以我们重命名了这些核心类型:

链接- https://spring.io/blog/2019/03/05/spring-hateoas-1-0-m1-released#overhaul

  1. ResourceSupport 现在是 RepresentationModel
  2. 资源现在是 EntityModel
  3. 资源现在是 CollectionModel
  4. PagedResources 现在是 PagedModel

  • 我正在努力寻找一个关于如何向控制器参数提供可以替换 `PagedResourcesAssembler&lt;User&gt; pagedResourcesAssembler` 的示例 (2认同)

Hun*_* Vu 7

Resource被替换了EntityModelControllerLinkBuilder被替换了WebMvcLinkBuilder