4주차 스프링 심화 부분 과제가 두개가 나왔는데..
Lv 1 과 Lv 2 가 있었다.
이 중에서 Lv 1 을 진행하게 되었는데 이를 하는데 있어서 너무 하루의 절반을 날린것 같다...
구현하는데 있어서 이전에 작업했던 프로젝트를 바탕으로 시작하였으며, 이전 작업물 조차도 다시 보니 이해가 바로 가지는 않아서 그 부분을 다시 보면서 해결을 하였다.
이전에 구현했던 게시판에서 이번에 배운 JWT 를 적용해서 로그인과 회원가입 및 그에 따른 토큰과 유저 정보를 이용해서 게시판의 기능에서 변화 및 추가 작업을 하게 되었다.
이에 관한 코드는 너무 길어질거 같아서 주석처리 및 정리는 이번주 내로 하고 우선 지금은 다른 스터디 공부 등도 해야할 것이 있기 때문에 이 글에서는 새롭게 알게되거나 잘못 일부 코드(주로 어노테이션) 을 다시 떠올리면서 정리하도록 하자..
@RequestBody
오늘 로그인 및 회원가입을 진행하는데 있어서 분명 값을 입력했음에도 불구하고 계속해서 에러가 발생했었다.
이 부분에 대해서 도무지 원인을 알 수 없어서 값을 받아오는 부분에 디버깅으로 확인해본 결과...
해당 부분에 값이 null 로 값 자체를 못받아오는 것을 보았다.
에러가 터진 원인은 엔티티에서 @Column(nullable = false) 이렇게 null 값을 못 받는데 자꾸 null 로 받아와서 문제가 생긴 것이었다.
이제 값이 null 로 들어오는 것을 알았기에 어디서 문제가 생겨서 값을 못 받아오는지 확인해본 결과...
컨트롤러의 RequestDto 부분에 RequestBody 어노테이션이 없어서 JSON 형식의 데이터를 받지 못한것이 원인이었다...
@Pattern
@Getter
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class SignupRequestDto {
@Pattern(regexp = "[a-z0-9]{4,10}", message = "최소 4자 이상, 10자 이하이며 알파벳 소문자(a~z), 숫자(0~9)")
private String username;
위 처럼 정규식을 구현해서 회원가입을 진행하는 부분에서 막혀있었다.
위의 경우에는 소문자 알파벳과 숫자만을 입력받고, 4자리부터 10자리의 제한이 걸려있다.
저 부분에서 해결을 할 줄 몰라서 결국에는 다른분께 물어봤다.
그리고, @Builder 가 쓰인 이유는 아직도 이해할 수가 없다... 이부분은 좀 더 찾아봐야겠다.
아래 블로그의 글을 참고했다.
[Spring Boot] @Valid 어노테이션으로 Parameter 검증하기
java.validation의 @Valid 어노테이션 사용법 정리 글입니다. Spring Boot 라이브러리에서 기본적으로 탑재된 기능이며 따로 dependency해 줄 필요가 없습니다. Spring Boot Version은 2.2.2.RELEASE 입니다. 1. java.valid
bamdule.tistory.com
@Slf4j
로그를 남기기 위해서 사용한다.
목적은 에러가 터졌을 때 그때의 기록을 로그로 남겨서 개발자가 추후에 확인하는 것에 있다.
이를 비슷한 목적으로 이용했던 방법으로는 println 을 이용해서 중간중간 출력 하면서 확인했던 것과 비슷하다.
SaveAndFlush
영속성 컨텍스트와 비교해서 이해를 하면 보다 쉽다.
save() 메소드는 영속성 컨텍스트에 저장하는 것이고 실제로 DB 에 저장은 추후 flush 또는 commit 메소드가 실행될 때 이루어진다.
saveAndFlush() 메소드는 즉시 DB 에 데이터를 반영한다.
@Transactional 을 자주 사용하는데 이 어노테이션의 핵심인 롤백 기능을 사용이 가능한데, saveAndFlush 를 쓰면 트랜잭션의 롤백 기능을 무시하고 과정이 끝나기 전에 바로 커밋이 된다.
아래 블로그의 글을 참고했다.
JPA - save() 와 saveAndFlush() 의 차이
영속성 컨텍스트(Persistence Context) 와 DB 사이, Baeldung 문서
velog.io
오늘 문제가 생긴 부분에서 인텔리제이 디버깅으로 찾은부분이 많았다. 그래서 앞으로도 더욱 더 많이 써서 확인하는 습관을 가지도록 해야겠다.
요 정도로 정리하고 오늘 새로안것들에 대해 몇가지만 정리했다...
더 자세한건 또 나중에 알아보자...
'일기' 카테고리의 다른 글
2022-12-08 (0) | 2022.12.08 |
---|---|
2022-12-07 (0) | 2022.12.07 |
2022-12-06 (0) | 2022.12.06 |
2022-12-03 (0) | 2022.12.02 |
2022-12-02 (2) | 2022.12.02 |