HandlerMethodArgumentResolver
▷스프링 3.1에서 추가된 인터페이스 이전의 ArgumentResolver 사용은 추천하지 않는다고 명시되어있다.
▷Controller개발 중에 들어오는 파라미터를 수정하거나 공통적으로 추가해야 할 경우 필요한 값들을 Controller에서 바로 사용할 수 있게 해준다.
▷컨트롤러의 파라미터가 Map이면 동작하지 않는 경우가 있다. (Map은 ArgumentResolver에서 동작하게 된다.)
▷supportsParameter, resolveArgument를 상속받아 구현 해야한다.
import org.springframework.core.MethodParameter; import org.springframework.web.bind.support.WebDataBinderFactory; import org.springframework.web.context.request.NativeWebRequest; import org.springframework.web.method.support.HandlerMethodArgumentResolver; import org.springframework.web.method.support.ModelAndViewContainer; import com.web.test.domain.model.User; public class UserArgumentResolver implements HandlerMethodArgumentResolver { @Override public boolean supportsParameter(MethodParameter parameter) { return User.class.isAssignableFrom(parameter.getParameterType()); } @Override public Object resolveArgument(MethodParameter parameter, ModelAndViewContainer mavContainer, NativeWebRequest webRequest, WebDataBinderFactory binderFactory) throws Exception { User user = new User();
user.setState("테스트 중입니다.");
return user;
} }
메소드 정리
supportsParameter
▷Resolver가 적용 가능한지 여부를 검사한다.
▷컨트롤러의 파라미터가 필요한 클래스인지 검사한다.
resolveArgument
파라미터와 기타 필요한 정보를 받아 실제 객체를 반환한다.
'WEB > Spring' 카테고리의 다른 글
JPA (Java Persistence API ) (0) | 2017.04.21 |
---|---|
@Controller (1) | 2017.01.30 |
Spring Boot : Bootstrap 연결 (0) | 2017.01.20 |
Spring Boot에서 Jsp 사용 (0) | 2017.01.20 |
Spring Boot (0) | 2017.01.20 |