개발 기록
spring.jackson.property-naming-strategy 설정 적용 안될 때 해결 방법 (@EnableWebMvc)
우준성
2023. 6. 17. 15:40
문제
필자는 백엔드 API에서 받는 request 및 리턴하는 response JSON의 형식을 스네이크 케이스로 통일하고 싶었다. 그를 위한 방법은
1. request, response 클래스에 @JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy.class) 어노테이션을 다는 방법
2. application.properties에 spring.jackson.property-naming-strategy=SNAKE_CASE 설정을 추가하는 방법 (전역)
크게 이 두 가지 방법이 있었다.
1번 방법을 사용할 경우에는 request, response (dto) 클래스 모두에 적용해야 하기 때문에 굉장히 번거롭고, 코드도 지저분해진다. 그리하여 2번 방법을 사용하려고 했는데 설정이 먹히질 않았다.
해결
삽질하다가, 스택오버플로우의 한 글을 보고 해답을 찾았다.
요약하자면, 자신의 백엔드에서 @EnableWebMvc 어노테이션을 쓸 경우에 application.properties의 전역 설정이 덮어쓰기 되어 먹히지 않는다는 것이다.
기존 @EnableWebMvc이 적용되어 있는 파일에서 해당 어노테이션을 지우고 실행해보니, 정상적으로 스네이크 케이스로 작동했다. (필자의 경우 SwaggerConfig에 해당 어노테이션이 명시되어 있었는데, 왜인지 모르겠다. 이게 복붙 트러블슈팅의 폐해 @EnableWebMvc가 어떤 역할을 하길래 옵션을 덮어쓰기하는지 더 알아보고, 해당 글에 추가할 예정이다.)
반응형