Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 백엔드
- DynamoDB
- serverless
- codebuild
- Docker
- orm
- Spring Boot
- 스터디
- backenddeveloper
- 개발자
- backend
- goorm
- MSA
- aws
- QueryDSL
- 자격증
- CICD
- mapping
- Redis
- 티스토리챌린지
- spring
- kakao
- CodeCommit
- jpa
- s3
- ec2
- sqs
- rds
- 오블완
- codedeploy
Archives
- Today
- Total
gony-dev 님의 블로그
[Spring] Page Interface의 직렬화 본문
JPA 강의를 토대로 페이징 기술을 도입하여 테스트하던 도중, 이런 오류가 발생하였다.
2024-11-13 12:41:38 [http-nio-8080-exec-3] WARN o.s.d.w.c.SpringDataJacksonConfiguration$PageModule$WarningLoggingModifier - Serializing PageImpl instances as-is is not supported, meaning that there is no guarantee about the stability of the resulting JSON structure!
For a stable JSON structure, please use Spring Data's PagedModel (globally via @EnableSpringDataWebSupport(pageSerializationMode = VIA_DTO))
or Spring HATEOAS and Spring Data's PagedResourcesAssembler as documented in https://docs.spring.io/spring-data/commons/reference/repositories/core-extensions.html#core.web.pageables.
내가 구현한 controller 코드와 그에 대한 응답은 다음과 같았다.
@GetMapping
public SuccessResponse<Page<StudyResDto>> getStudy(@PageableDefault(size = 8) Pageable pageable) {
Page<StudyResDto> studies = studyService.getStudies(pageable);
return new SuccessResponse<>(studies);
}
- 그대로 사용하여도 요청 자체는 불러와지지만, 페이징 구현이 직렬화되지 않아
JSON 형식의 body에 안정성이 없다는 것이 이 오류의 원인이었다. - 다행이도 큰 문제는 아니었으며, 로그에서 해결방안까지 제시해주니 금방 해결할 수 있었다!
Solution
Application 클래스에 다음과 같은 코드를 추가해 주기만 하면 된다!
SpringBootApplication
@EnableJpaAuditing
@EnableSpringDataWebSupport(pageSerializationMode = VIA_DTO) // 이거!!
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
그랬더니 응답은 요롷게 페이지 요소들이 단순하고 가독성있게 나온 것을 확인할 수가 있다!!
@EnableSpringDataWebSupport란?
- 이 어노테이션은 Spring MVC에서 사용할 수 있는 편리한 기능을 제공해주는 어노테이션으로
다양한 기능들을 제공한다. - 위와 같이 페이징과 정렬에 대한 지원이나 도메인 클래스를 컨버터 하기도 하는 등 필수는 아니지만, 쓰면 더욱 편리한 코딩이 가능하다고 생각하면 될 것 같다!
'TroubleShooting' 카테고리의 다른 글
[RDS] Failed to determine a suitable driver class (0) | 2024.12.23 |
---|---|
[Trouble Shooting] Restricted Identifier (0) | 2024.12.04 |