아규먼트 리졸버(Argument Resolver)

oyeon·2021년 3월 15일
0

아규먼트 리졸버(Argument Resolver)

  • 컨트롤러의 메서드의 인자로 사용자가 임의의 값을 전달하는 방법을 제공하고자 할 때 사용된다.
  • 예를 들어, 세션에 저장되어 있는 값 중 특정 이름의 값을 메서드의 인자로 전달한다.

아규먼트 리졸버 작성방법

  • org.springframework.web.method.support.HandlerMethodArgumentResolver를 구현한 클래스를 작성한다.
  • supportsParameter메서드를 오버라이딩 하고 원하는 타입의 인자가 있는지 검사한 후, 있을 경우 true가 리턴되도록 한다.
  • resolveArgument메서드를 오버라이딩 한 후, 메서드의 인자로 전달할 값을 리턴한다.

Java Config에 설정하는 방법

  • WebMvcConfigurerAdapter를 상속받은 Java Config 파일에서 addArgumentResolvers 메서드를 오버라이딩 한 후 원하는 아규먼트 리졸버 클래스 객체를 등록한다.

xml 파일에 설정하는 방법

<mvc:annotation-driven>
  <mvc:argument-resolvers>
    <bean class="아규먼트리졸버클래스"></bean>
  </mvc:argument-resolvers>
</mvc:annotation-driven>

Spring MVC의 기본 ArgumentResolver들

reference
https://github.com/spring-projects/spring-framework/blob/v5.0.0.RELEASE/spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/method/annotation/RequestMappingHandlerAdapter.java

위의 링크를 참고하여 getDefaultArgumentResolvers()메서드를 보면 기본으로 설정되는 아규먼트 리졸버에 어떤 것이 있는지 알 수 있다.

※ Map객체나 Map을 상속받은 객체는 Spring에서 이미 선언한 아규먼트 리졸버가 처리하기 때문에 전달 할 수 없다. Map객체를 전달하려면 Map을 필드로 가지고 있는 별도의 객체를 선언한 후 사용해야 한다.

profile
Enjoy to study

0개의 댓글