You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Java 8 date/time type `java.time.LocalDateTime not supported by default: add Module "com.fasterxml.jackson.datatype:jackson-datatype-jsr310"
원인
LocalDateTime을 역직렬화하지 못해서 발생하는 문제
Redis 캐싱 처리할 때 직렬화 또는 역직렬화를 이용해 데이터 저장과 조회를 하기 때문
해결
jackson-datatype-jsr310 종속성을 추가
// 자바 역직렬화 문제 해결 패키지
implementation 'com.fasterxml.jackson.datatype:jackson-datatype-jsr310'
implementation 'com.fasterxml.jackson.core:jackson-databind'
캐시로 사용할 객체에 LocalDateTime 타입의 값이 존재한다면 @JsonSerialize, @JsonDeserialize 애노테이션을 기입해주어야 함
public record ItemsResponseDto(List<ItemDetailDto> items) {
public record ItemDetailDto(
@Schema(description = "동별 드랍 아이템 개수", example = "1")
Long itemId,
@Schema(description = "사용자 정보")
UserResponseDto user,
@Schema(description = "사용자 위치", example = "성동구 성수1가 1동")
ItemLocationResponseDto location,
@Schema(description = "음악 정보")
MusicResponseDto music,
@Schema(description = "사용자 코멘트", example = "이 노래 좋아요")
String content,
@Schema(description = "생성시간", example = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(
shape = JsonFormat.Shape.STRING,
pattern = "yyyy-MM-dd HH:mm:ss",
locale = "Asia/Seoul"
)
@JsonSerialize(using = LocalDateTimeSerializer.class)
@JsonDeserialize(using =LocalDateTimeDeserializer.class)
LocalDateTime createdAt,
@Schema(description = "아이템 좋아요 여부", example = "true")
boolean isLiked,
@Schema(description = "아이템 좋아요 개수", example = "100")
int itemLikeCount
) {
public ItemDetailDto(Item item) {
this(
item.getId(),
new UserResponseDto(item.getUser()),
new ItemLocationResponseDto(item.getItemLocation().getName()),
new MusicResponseDto(item),
item.getContent(),
item.getCreatedAt(),
item.isLiked(item.getUser()),
item.getItemLikeCount()
);
}
}
}
상황
원인
해결
참고
The text was updated successfully, but these errors were encountered: