반응형

Resolver란?

Resolver는 요청이나 데이터를 해석하여 필요한 객체나 값으로 변환하거나 찾아주는 컴포넌트를 의미합니다.

쉽게 말해, 클라이언트가 보낸 요청이나 특정 데이터를 내부적으로 필요한 형태(예: 객체, 값 등)로 가공하거나 찾아주는 역할을 합니다.
"Resolve"라는 단어 자체가 "해결하다", "변환하다"는 뜻을 가지고 있기 때문에, Resolver는 어떤 것을 해석해서 알맞은 형태로 바꿔주는 기능이라고 이해하면 됩니다.

 

Spring Boot에서의 Resolver 의미와 종류

1. HandlerMethodArgumentResolver (HTTP 요청 파라미터 해석기)

Spring MVC에서 컨트롤러 메서드의 파라미터를 해석해서 값으로 주입하는 컴포넌트입니다.
예를 들어, 다음과 같은 컨트롤러 메서드를 생각해봅시다.

@GetMapping("/user")
public String getUser(@CurrentUser User user) { 
	return user.getName();
 }

여기서 @CurrentUser는 커스텀 어노테이션이고, 이 값을 주입하려면 HandlerMethodArgumentResolver를 구현해야 합니다.

예)

public class CurrentUserArgumentResolver implements HandlerMethodArgumentResolver {

    @Override
    public boolean supportsParameter(MethodParameter parameter) {
        return parameter.getParameterAnnotation(CurrentUser.class) != null &&
               parameter.getParameterType().equals(User.class);
    }

    @Override
    public Object resolveArgument(MethodParameter parameter, 
                                  ModelAndViewContainer mavContainer,
                                  NativeWebRequest webRequest,
                                  WebDataBinderFactory binderFactory) {
        // 실제 사용자 객체를 반환
        return SecurityContextHolder.getContext().getAuthentication().getPrincipal();
    }
}

이후 WebMvcConfigurer에서 등록해 줍니다:

@Configuration
public class WebConfig implements WebMvcConfigurer {
    @Override
    public void addArgumentResolvers(List<HandlerMethodArgumentResolver> resolvers) {
        resolvers.add(new CurrentUserArgumentResolver());
    }
}
 

2. ViewResolver (뷰 이름을 템플릿으로 매핑)

Spring MVC에서 컨트롤러가 반환한 뷰 이름을 실제 뷰(template)로 변환하는 역할입니다.

@Controller
public String hello(Model model) {
    model.addAttribute("msg", "Hello");
    return "greeting"; // ViewResolver가 greeting.html로 연결
}

 

반응형

+ Recent posts