티스토리 뷰
안녕하세요 강정호입니다. 오늘은 스프링의 HandlerMethodArgumentResolver에 대해서 알아볼게요
HandlerMethodArgumentResolver 인터페이스의 역할은 컨트롤러에서 파라미터를 바인딩 해주는 역할을 한다. 예를 들어 특정 클래스나 특정 어노테이션등의 요청 파라미터를 수정해야하거나, 또는 클래스의 파라미터를 조작 혹은 공통적으로 써야하는 파라미터들을 바인딩 해주는 역할이다.
아래 소스를 보며 설명 드릴게요.
위의 코드에서 보면 @GetMapping으로 파라메터를 받는다. 하지만 ServerInfo 파라메터는 뷰 페이지로부터 받은 파라메터가 아니다. 그럼 어디서 받은 것일까??
ServerInfo 클래스는 다음과 같이 구성되어 있다.
ServerInfo 클래스는 ip, port를 멤버변수로 가지고 있는 클래스에요. 이것이 바로 바인딩 대상의 클래스입니다.
그렇다면 ServerInfo 객체가 생성되지 않고 바로 Controller의 메서드의 파라메터로 입력될 수 있는 것인가에 대해 의문이 생깁니다. 이 때 HandlerMethodArgumentResolver가 역할을 합니다. 이 인터페이스는 사용자의 요청이 Controller에 도달하기 전에 그 요청의 파라메터들을 수정할 수 있게 도와줘요.
아래의 예제코드를 보면
supportsParameter와 resolveArgument 2개의 메서드를 볼 수 있어요.
- supportsParameter : 바인딩할 클래스를 지정해주는 메서드. 여기서는 ServerInfo 클래스를 지정하였다.
- resolveArgument : 바인딩할 객체를 조작할 수 있는 메서드. 예를 들면 객체를 생성하여 해당 객체에 데이터를 입력해줄 수 있는 메서드이다. 여기서는 로컬 ip주소와 서버 포트번호를 입력했어요.
마지막으로 위와 같이 개발자 스스로 정한 HandlerMethodArgumentResolver를 설정(Configuration)에 등록을 해주어야 해요. WebmvcConfigurer라는 인터페이스의 addArgumentResolver() 메서드에 아까 구현한 리졸버를 등록하면 됩니다.
그렇게 하고 프로그램을 돌려보면
ServerInfo 객체가 Controller의 파라메터로 바인딩이 되고, 이 바인딩 된 ServerInfo는 미리 초기화한 ip, port 데이터를 가지고 있습니다. 그래서 다음과 같은 결과가 나와요.
위와 같이 아이피 주소와 포트번호를 결과로 볼 수 있습니다.
다음 시간에는 Controller에서 파라메터를 받는 방식 @RequestParam, @PathVariable, @Model 등의 어노테이션에 대해 공부해 볼게요.
'Back-end' 카테고리의 다른 글
[Spring Framework] HandlerInterceptorAdapter (0) | 2018.10.16 |
---|---|
[Spring Boot] 컨트롤러 핸들러 메소드 매개변수 타입 (1) | 2018.10.14 |
[Spring Boot] 스프링 Bean 컨테이너의 역할 (2) | 2018.10.06 |
[Spring Boot] 스프링부트 개발 준비 (0) | 2018.10.06 |
[Spring Boot] OOP에 대하여 (0) | 2018.10.06 |
- Total
- Today
- Yesterday
- 깃허브
- push_back
- 개발자 회고
- 관계대수
- 파라메터
- 깃
- 항해플러스후기
- 재테크공부
- 유즈케이스
- 월부닷컴
- front
- 월급쟁이부자들
- 열반스쿨기초반
- GIT
- github
- 부동산공부
- 내년은 빡세게!!
- pop_back
- 인셉션
- 폭포수
- Spring boot
- docker
- 항해플러스백엔드
- 도커
- Use case
- Inception
- resize
- ```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
- 항해솔직후기
- 2023년
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |