2024. 6. 25. 17:23ㆍSpring
Response에 timestamp를 담아서 보냈더니
갑자기 localDateTime이
"timestamp": [
2024,
5,
19,
1,
24,
12,
394621000
]
이렇게 각 항목별로 JSON Serialized 되어 리턴되는 현상이 발생했다.
원래대로라면
"timestamp": "2024-05-21T23:19:49.380086"
이렇게 String 형태로 나와야 하는데 다 쪼개져서 나와서 처음에는 Jackson 라이브러리에 문제가 있나 했다.
jackson 라이브러리란 ?
잭슨은 JSON -> java 클래스로 Deserialize, java 클래스 -> JSON 으로 Serialize 할 때 유용한 라이브러리이다.
그러나 dependency에
<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.datatype/jackson-datatype-jsr310 -->
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-jsr310</artifactId>
<version>2.9.9</version>
</dependency>
를 추가해도 바뀌는게 없어서 다른 방법을 계속 찾다가, 잭슨 라이브러리 문제가 아니고 어노테이션 문제라는 것을 알 수 있었다.
로그인 방식으로 JWT토큰 방식을 사용하려고 추가한 코드에 @EnableWebMvc 가 붙어있었고,
스프링부트는 2.0 버전 이상부터 LocalDateTime 클래스를 string 형태로 리턴해주는데
해당 어노테이션이 적용되어 있으면 스프링부트의 auto configuration 기능이 활성화 되지 않았다.
💡 따라서, WebMVC 설정이 필요한 경우에는 해당 어노테이션을 사용하지 말고
WebMvcConfigurer 인터페이스를 구현하여 @Configuration 어노테이션을 사용하면 된다.
내가 작성한 코드에는 EnableWebMvc + WebMvcConfigurer 인터페이스 구현 + @Configuration
이 세가지가 다 적용이 되어 있었다.
결과적으로 @EnableWebMvc 만 지워줬더니 해결되었다!
'Spring' 카테고리의 다른 글
Entity 클래스에서 자주 사용하는 어노테이션 (1) | 2024.09.08 |
---|---|
스프링 3 이상 Multipart Config 설정 (0) | 2024.07.30 |
Spring Security JWTFilter에서 Exception 처리하기 (4) | 2024.07.28 |