Programming/Spring
Argument Resolver
Albothyl
2019. 3. 27. 21:00
1. create some argument resolver class
import org.springframework.core.MethodParameter;
import org.springframework.mobile.device.Device;
import org.springframework.mobile.device.DeviceResolver;
import org.springframework.mobile.device.LiteDeviceResolver;
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 javax.servlet.http.HttpServletRequest;
public class SomeArgumentResolver implements HandlerMethodArgumentResolver {
private final DeviceResolver deviceResolver = new LiteDeviceResolver();
@Override
public boolean supportsParameter(MethodParameter parameter) {
return Device.class.isAssignableFrom(parameter.getParameterType());
}
@Override
public Object resolveArgument(MethodParameter parameter, ModelAndViewContainer mavContainer, NativeWebRequest webRequest, WebDataBinderFactory binderFactory) throws Exception {
final Device device = deviceResolver.resolveDevice(webRequest.getNativeRequest(HttpServletRequest.class));
return device;
}
}
2. create some argument resolver bean
@Bean
public SomeAugumentResolver someAugumentResolver() {
return new SomeAugumentResolver();
}
3. regiest some argument resolver
public class SomeConfiguration extend WebMvcConfigurerAdapter {
...
@Override
public void addArgumentResolvers(List<HandlerMethodArgumentResolver> argumentResolvers) {
argumentResolvers.add(someAugumentResolver());
}
}
argument resolver는 controller에서 사용할 객체나 데이터를 전처리 할 때 사용한다.