저번시간에 컨버터를 컨버전서비스에 등록하는 것 까지 해봤는데,
그래도 쓸 때는 우리가 직접 컨버전서비스를 생성해서 사용해서 불편했다.
무슨 말이냐 하면, 스프링에 등록하면 @RequestParam 이런 곳에도 자동으로 적용되어 우리가 등록한 컨버트 로직을 수행한다.
등록하는 방법은
@Configuration
public class WebConfig implements WebMvcConfigurer {
@Override
public void addFormatters(FormatterRegistry registry) {
registry.addConverter(new StringToIntegerConverter());
registry.addConverter(new IntegerToStringConverter());
registry.addConverter(new IpPortToStringConverter());
registry.addConverter(new StringIpPortConverter());
}
}
이렇게 addFormatters를 override 해서 registry에 등록하면 된다.
FormatterRegistry는 ConverterRegistry의 구현체 중 하나이다.
@GetMapping("/ip-port")
public String ipPort(@RequestParam IpPort ipPort){
System.out.println("ipPort = " + ipPort);
System.out.println("ipPort = " + ipPort.getIp());
System.out.println("ipPort = " + ipPort.getPort());
return "ok";
}
컨트롤러에 등록해서 테스트 해 보면
http://localhost:8080/ip-port?ipPort=127.0.0.0:8080
잘 된다.
이거는 @RequestParam, @ModelAttribute, @PassVariable 등 모두 다 적용이 된다.
참고로, @RequestParam에서 사용하는 ArgumentResolver가 실제로 ConversionService를 사용한다. @ModelAttribute 또한 마찬가지.
'스프링 > 4. 스프링 MVC-2' 카테고리의 다른 글
80. 포맷터 (0) | 2023.09.24 |
---|---|
79. 컨버터를 뷰 템플릿에 적용 (0) | 2023.09.23 |
77. 컨버전 서비스 (0) | 2023.09.23 |
76. 스프링 타입컨버터 (0) | 2023.09.22 |
75. 스프링의 자동 타입 변환 (0) | 2023.09.22 |