성실한 사람이 되자

성실하게 글쓰자

This is spear

JAVA_SPRING/SPRING BOOT

Spring Boot)HATEOAS...linkTo, methodOn 사용하는 방법 / 변경하는 방법

Imaspear 2020. 7. 8. 17:38
728x90

스프링 부트 튜토리얼을 따라하다가 보면 낮은 버전의 HATEOAS를 사용해서 몇몇 메소드가 없어지거나 변경되는 경우가 있습니다. 

 

https://spring.io/guides/tutorials/bookmarks/

 

Building REST services with Spring

this tutorial is designed to be completed in 2-3 hours, it provides deeper, in-context explorations of enterprise application development topics, leaving you ready to implement real-world solutions.

spring.io

 

 

 

 

일단 전문을 살펴 보겠습니다. 

package payroll;

import static org.springframework.hateoas.mvc.ControllerLinkBuilder.*;

import org.springframework.hateoas.Resource;
import org.springframework.hateoas.ResourceAssembler;
import org.springframework.stereotype.Component;

@Component
class EmployeeResourceAssembler implements ResourceAssembler<Employee, Resource<Employee>> {

  @Override
  public Resource<Employee> toResource(Employee employee) {

    return new Resource<>(employee,
      linkTo(methodOn(EmployeeController.class).one(employee.getId())).withSelfRel(),
      linkTo(methodOn(EmployeeController.class).all()).withRel("employees"));
  }
}

 

 

첫 번째


 

첫 번째로 linkTo, methodOn의 메소드의 경우에는 옛날 버전에서는 ControllerLinkBuilder안에 포함되었지만 지금은 WebMvcLinkBuilder 안에 존재합니다.

 

  • import static org.springframework.hateoas.mvc.ControllerLinkBuilder.*; 를 
  • import static org.springframework.hateoas.server.mvc.WebMvcLinkBuilder.*; 로 변경 

 

 

 

 

 

두 번째


 

두 번째는 Resource, ResourceAssembler 입니다.두가지의 경우에는 전에 포스트한 내용이 있습니다.

 

ResourceSupport / Resource / Resources / PagedResources/ ResourceAssembler 등 많은 메소드의 변경사항들을 적어뒀습니다. 

https://imspear.tistory.com/81

 

Spring Boot HATEOAS) RESOURCE, RESOUCES 변경

Spring Boot HATEOAS 표현 모델 ResourceSupport / Resource / Resources / PagedResources 클래스 그룹은 실제로 적절하게 명명 된 것으로 느껴지지 않았습니다. 결국, 이러한 유형은 실제로 자원을 나타내는 것..

imspear.tistory.com

 

 

 

  • import org.springframework.hateoas.Resource; 를
  • import org.springframework.hateoas.EntityModel; 로 변경

 

  • import org.springframework.hateoas.ResourceAssembler; 를 
  • import org.springframework.hateoas.server.RepresentationModelAssembler; 로 변경 

 

다 변경하면 이렇게 되겠네요. 

package payroll;

import static org.springframework.hateoas.server.mvc.WebMvcLinkBuilder.*;

import org.springframework.hateoas.EntityModel;
import org.springframework.hateoas.server.RepresentationModelAssembler;
import org.springframework.stereotype.Component;

@Component
class EmployeeResourceAssembler implements RepresentationModelAssembler<Employee, EntityModel<Employee>> {

  @Override
  public EntityModel<Employee> toResource(Employee employee) {

    return new EntityModel<>(employee,
      linkTo(methodOn(EmployeeController.class).one(employee.getId())).withSelfRel(),
      linkTo(methodOn(EmployeeController.class).all()).withRel("employees"));
  }
}

 

 

 

 

 

 

 

 

 

 

마지막으로는...


 

여기 공식 문서에서 변경사항을 직접 확인할 수 있습니다. 

 

https://docs.spring.io/spring-hateoas/docs/current/reference/html/

 

Spring HATEOAS - Reference Documentation

Example 49. Configuring WebTestClient when using Spring Boot @SpringBootTest @AutoConfigureWebTestClient (1) class WebClientBasedTests { @Test void exampleTest(@Autowired WebTestClient.Builder builder, @Autowired HypermediaWebTestClientConfigurer configure

docs.spring.io