mapstruct로 dto매핑을 하고 있었는데
mapper에 Page<DTO> 매핑 메소드를 작성하니 에러가 떴다...
"No implementation type is registered for return type org.springframework.data.domain.Page<com.mycompany.dto.CommunityReplyDTO>."
에러메세지를 해석해보니
org.springframework.data.domain.Page<com.mycompany.dto.CommunityReplyDTO>
타입에 대한 구현체가 존재하지 않는다는 의미였다...
어제부터 나를 괴롭게하는 (구)현체...
검색해보니 다행히 어렵지 않게 이유를 알 수 있었고
또 다행히도 어렵지 않게 해결이 가능했다 ㅎㅎ
https://okky.kr/questions/1333309
OKKY - mapstruct Page객체 어떻게 받는건가요?
import com.fsm.modulecommon.mapstruct.GenericMapper; import com.fsm.user.dto.res.UserInfoResponse; import com.fsm.modulecommon.model.user.User; import org.mapstruct.Mapper; import org.mapstruct.facto
okky.kr
해당 글의 댓글에서 말씀해 주신대로 두가지 방법을 사용하여 해결이 가능했는데
1. Page의 구현체인 PageImpl로 메소드를 선언
2. page에는 mapstructor을 사용하지 않고 .map을 사용하기
둘 다 시도 해봤는데
댓글에서 말씀하신대로 PageImpl이 어색하기도 하고
. map을 사용하면 가독성에도 문제가 없어서 Page를 매핑할 때는 2번 방법을 사용하기로 했다!
1. Page의 구현체인 PageImpl로 메소드를 선언
Mapper 정의
@Mapper(componentModel = "spring",unmappedTargetPolicy = ReportingPolicy.IGNORE)
public interface CommunityMapper {
CommunityMapper INSTANCE = Mappers.getMapper(CommunityMapper.class);
// Page<CommunityReply> -> Page<CommunityReplyDTO>
PageImpl<CommunityReplyDTO> toCommunityReplyDTO(Page<CommunityReply> replyList);
}
매핑하기
public Page<CommunityReplyDTO> getCommunityReply(int communityNo) throws Exception{
Page<CommunityReply> replyList = communityReplyRepository.findByCommunityNo(communityNo);
Page<CommunityReplyDTO> dtoReplyList = CommunityMapper.INSTANCE.toCommunityReplyDTO(replyList);
return dtoReplyList;
}
2. page에는 mapstructor을 사용하지 않고 .map을 사용하기
매핑하기
@Service
public class CommunityReplyServiceImpl implements CommunityReplyService {
@Autowired
private CommunityReplyRepository communityReplyRepository;
@Autowired
private ModelMapper modelMapper;
public Page<CommunityReplyDTO> getCommunityReply(int communityNo) throws Exception{
Page<CommunityReply> replyList = communityReplyRepository.findByCommunityNo(communityNo);
Page<CommunityReplyDTO> dtoReplyList = replyList.map(reply -> modelMapper.map(reply, CommunityReplyDTO.class));
return dtoReplyList;
}
}
'🌱 Spring' 카테고리의 다른 글
[Spring Boot] summer note 적용하기(게시판 글쓰기) (0) | 2024.02.28 |
---|---|
[springboot]mapstruct로 entity와 dto 매핑하기 (0) | 2024.02.22 |
[SpringBoot]JUnit5 + mokito를 이용한 MVC 테스트 (1) | 2023.10.16 |
JUnit이란? (0) | 2023.10.12 |
스프링 빈(Spring Bean)이란? (0) | 2023.09.26 |