들어가기 전에
이번 시간엔 컨트롤러의 메소드의 인자값으로 사용자가 임의의 값을 전달할 수 있도록 도와주는 아규먼트 리졸버(Argument Resolver)에 대해 알아보도록 하겠습니다.
학습 목표
- 아규먼트 리졸버의 사용방법에 대해 이해한다.
- Spring MVC 웹 어플리케이션에서 아규먼트 리졸버를 적용하는 방법에 대해 이해한다.
핵심 개념
- HandlerMethodArgumentResolver
- WebMvcConfigurerAdapter의 addArgumentResolvers()메소드
학습하기
아규먼트 리졸버란?
- 컨트롤러의 메소드의 인자로 사용자가 임의의 값을 전달하는 방법을 제공하고자 할 때 사용됩니다.
- 예를 들어, 세션에 저장되어 있는 값 중 특정 이름의 값을 메소드 인자로 전달합니다.
아규먼트 리졸버 작성방법 1/2
- org.springframework.web.method.support.HandlerMethodArgumentResolver를 구현한 클래스를 작성합니다.
- supportsParameter메소드를 오버라이딩 한 후, 원하는 타입의 인자가 있는지 검사한 후 있을 경우 true가 리턴되도록 합니다.
- resolveArgument메소드를 오버라이딩 한 후, 메소드의 인자로 전달할 값을 리턴합니다.
아규먼트 리졸버 작성방법 2/2
- 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들
getDefaultArgumentResolvers()메소드를 보면 기본으로 설정되는 아규먼트 리졸버에 어떤 것이 있는지 알 수 있습니다.
Map객체나 Map을 상속받은 객체는 Spring에서 이미 선언한 아규먼트 리졸버가 처리하기 때문에 전달 할 수 없습니다.
Map객체를 전달하려면 Map을 필드로 가지고 있는 별도의 객체를 선언한 후 사용해야 합니다.
소스코드 바로가기
참고 자료
comment
감사합니다 ~~~~
감사합니다.
잘들었습니당