웹 프레임워크/Spring
프로젝트E. 예약 : 한줄평 관련 web API 만들기 - 코드 리뷰 및 회고(웹 백엔드)
EpicArts
2021. 2. 17. 01:11
728x90
총 두번에 걸쳐서 통과를 했네요. 생각보다 코드 제출 후 리뷰 및 피드백을 받는 기간이 길었네요. 평가하시는분이 많이 없으신듯 합니다. ㅠ
다운로드/업로드 기능을 구현해야합니다.
#Advice
인터페이스의 멤버변수는 상수만 허용하기 때문에 Static final 생략 가능
public interface CommentService {
// static final int LIMIT = 5;
int LIMIT = 5;
}
파일 타입 체크 로직 수정
private boolean checkImageMimeType(Path path) throws IOException {
String mimeType = Files.probeContentType(path);
if (mimeType.startsWith("image")) {
return true;
} else {
return false;
}
}
starsWith 는 실패시 false, 성공시 True를 리턴한다. if문 생략가능.
www.javatpoint.com/java-string-startswith
의미 있는 exception을 throw하자
try {
UserEntity user = userDao.getUserByEmail(email);
ReservationInfoEntity reservationInfo = reservationInfoDao.selectById(reservationInfoId);
if (reservationInfo.getUserId() != user.getId()) {
throw new Exception("로그인 유저 이메일과 예약한 유저 정보가 일치하지 않습니다.");
}
기존에는 Exception을 throws 하였습니다.
try {
UserEntity user = userDao.getUserByEmail(email);
ReservationInfoEntity reservationInfo = reservationInfoDao.selectById(reservationInfoId);
if (reservationInfo.getUserId() != user.getId()) {
throw new AccessDeniedException("로그인 유저 이메일과 예약한 유저 정보가 일치하지 않습니다.");
}
로그인 권한이 없기에 AccessDeniedException을 throw 변경 하였습니다.
} catch (AccessDeniedException e) {
throw new AccessDeniedException(e.getMessage());
} catch (IOException e) {
throw new IOException(e.getMessage());
}
위와 같이 AccessDeniedException를 throw 하여 컨트롤러에서 처리하도록 수정하였습니다.
@Transactional 는 의미있는 곳에서 사용하자.
@transactional 어노테이션을 붙인 이유 중 하나가 예외 발생시 rollback을 하겠다는 의미, RuntimeException 발생시 rollback을 합니다.
해당 코드에서는 rollback이 일어날 부분이 없습니다.
728x90