dev/spring boot + intelliJ
WebConfig에 Formatter 등록
dev_0hoon
2023. 12. 20. 22:12
package hello.typeconverter;
import hello.typeconverter.converter.IntegerToStringConverter;
import hello.typeconverter.converter.IpPortToStringConverter;
import hello.typeconverter.converter.StringToIntegerConverter;
import hello.typeconverter.converter.StringToIpPortConverter;
import hello.typeconverter.formatter.MyNumberFormatter;
import org.springframework.context.annotation.Configuration;
import org.springframework.format.FormatterRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Configuration
public class WebConfig implements WebMvcConfigurer {
@Override
public void addFormatters(FormatterRegistry registry) {
//주석처리 우선순위
registry.addConverter(new StringToIpPortConverter());
registry.addConverter(new IpPortToStringConverter());
//registry.addConverter(new IntegerToStringConverter());
//registry.addConverter(new StringToIntegerConverter());
//포메터 추가
registry.addFormatter(new MyNumberFormatter());
}
}
@GetMapping("/converter-view")
public String converterView(Model model){
model.addAttribute("number",10000);
model.addAttribute("ipPort", new IpPort("127.0.0.1",8080));
return "converter-view";
}

포메터가 작동해서 ${{}} 안의 숫자는 이쁜 문자열로 사용 된다.
http://localhost:8080/hello-v2?data=10,000 호출 할 경우
@GetMapping("/hello-v2") //문자 10,000 넘어
public String helloV2(@RequestParam Integer data){
System.out.println("data= " + data);
return "ok";
}

이렇게 파라미터를 받을 때 포메터가 작동하며 Integer로 변경해준다.