: 매일 저녁, 하루를 마무리하며 작성 !
: ⭕ 지식 위주, 학습한 것을 노트 정리한다고 생각하고 작성하면서 머리 속 흩어져있는 지식들을 정리 !
class Solution {
public int solution(String t, String p) {
int answer = 0;
int t_len = t.length();
long p_len = p.length();
for (int i=0; i<=t_len-p_len; i++) {
String range = t.substring(i, i + (int)p_len);
long rangeNum = Long.parseLong(range);
long p_num = Long.parseLong(p);
if (rangeNum <= p_num) {
answer += 1;
}
}
return answer;
}
}
TodoSchedulerController 내부에 @Autowired 어노테이션을 사용하여 의존성 주입을 해주셨는데요. 작성해주신 방법으로도 잘 동작하지만 해당 방법은 순환참조를 발생시킬 수 있기 때문에 constructor 방식으로 사용해주시는 것이 더 좋습니다. 직접 생성자를 만들어주시거나 롬복의 @RequiredArgsConstructor 와 함께 final 로 선언해주시면 됩니다.
댓글이 DB에 존재하지 않거나 댓글내용이 비어있는 등의 케이스에 대해 예외처리를 잘 진행해주셨습니다. 다만, 댓글내용이 비어있는 것처럼 기본적인 값에 대한 validation 은 스프링에서 제공해주는 @Valid 어노테이션으로 처리해주시면 더 좋은 구조가 될 것 같습니다. (https://mangkyu.tistory.com/174)
댓글엔티티를 잘 작성해주셨는데요. JPA 사용을 위해 댓글과 일정 사이에도 연관관계를 설정해주시는 것이 좋습니다.
수정기능의 경우에만 @Transactional을 사용해주셨는데요. 유지보수를 위해 등록,삭제 기능에도 트랜잭션 어노테이션을 사용해주시는 것이 좋습니다.
회원가입 시 만족해야하는 조건을 추가로 구현해주시면 좋을 것 같습니다.
로그인 시 PasswordEncoder 를 사용해주셨는데요. 사용자로부터 입력받은 password와 matches로 비교하여도 정상적으로 동작하는지 확인이 필요할 것 같습니다.