@RestControllerAdvice
를 사용해서 모든 RestController의 예외를 공통화해서 처리
/* GlobalControllerAdvice.java */
@ExceptionHandler({IllegalArgumentException.class})
public ResponseEntity<ApiResponseDto> illegalArgumentExceptionHandler(IllegalArgumentException ex) {
ApiResponseDto exceptionResponse = new ApiResponseDto(ex.getMessage(), HttpStatus.BAD_REQUEST.value());
return new ResponseEntity<>(
// HTTP body
exceptionResponse,
// HTTP status code
HttpStatus.BAD_REQUEST
);
}
Service 클래스를 인터페스와 구현체로 분리하고 인터페이스 메서드에 주석 달기
PostServiceImpl
로 이름을 변경하고, 새롭게 생성된 PostService
인터페이스를 상속받는다.public interface PostService {
/**
* 게시글 생성
* @param requestDto 게시글 생성 요청 정보
* @param user 게시글 생성 요청자
* @return 게시글 생성 결과
*/
PostResponseDto createBlogPost(PostRequestDto requestDto, User user);
/**
* 게시글 전체 조회
* @return 게시글 전체 조회 결과
*/
List<PostResponseDto> getBlogPosts();
/**
* 게시글 생성
* @param id 조회할 게시글 id
* @return 게시글 조회 결과
*/
PostResponseDto getBlogPost(Integer id);
/**
* 게시글 생성
* @param id 조회할 게시글 id
* @param requestDto 게시글 수정 요청 정보
* @param user 게시글 수정 요청자
* @return 게시글 수정 결과
*/
PostResponseDto updateBlogPost(Integer id, PostRequestDto requestDto, User user);
/**
* 게시글 생성
* @param id 조회할 게시글 id
* @param user 게시글 수정 요청자
* @param res http servlet 응답 결과
* @return 게시글 수정 결과
*/
ApiResponseDto deleteBlogPost(Integer id, User user, HttpServletResponse res);
}
PostService
인터페이스를 상속 받을 뿐, 내부 구현은 크게 바뀌지 않았다.public class PostServiceImpl implements PostService { ... }
@Transactional
어노테이션 추가@Transactional
을 붙여주는 것이 안전하다는 피드백을 받아, DB에 접근하는 메서드들에 모두 추가해주었다.
정리가 잘 된 글이네요. 도움이 됐습니다.