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
'웹 프레임워크 > Spring' 카테고리의 다른 글
Spring 현재 날짜를 기준으로 업로드 폴더 생성 및 업로드 (1) | 2021.01.26 |
---|---|
프로젝트 D. Spring Security를 이용한 로그인하기 및 예약 관련 web API 만들기 - 코드 리뷰 및 회고(웹 백엔드) (0) | 2021.01.25 |
Spring Controller에서 list형태가 포함되어 있는 json 포맷 받기, 응답 (0) | 2021.01.16 |
Spring Controller에서 json으로 Date format 객체 받기, 응답 (0) | 2021.01.16 |
프로젝트C. 메인, 상세보기 관련 web API 만들기 코드 리뷰 및 회고 (boostcourse 웹 백엔드) (0) | 2021.01.11 |