J'utilise Spring Boot 2.2.0.M1 avec HATEOAS et Gradle.
implementation 'org.springframework.boot:spring-boot-starter-hateoas'
Pour l'instant, Resource
n'est pas trouvé par le IDE (IntelliJ IDEA 2018.3) et ControllerLinkBuilder
est marqué comme obsolète.
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;
}
}
Les importations disponibles selon le IDE sont:
Comment puis-je resoudre ceci?
Mon objectif est de trouver Resource
depuis HATEOAS et d'utiliser le substitut de ControllerLinkBuilder
.
Les changements les plus importants dans la structure des packages ont été provoqués par l'introduction d'une API d'enregistrement de type hypermédia pour prendre en charge des types de supports supplémentaires dans Spring HATEOAS.
https://docs.spring.io/spring-hateoas/docs/current/reference/html/