강의보다 간단하게 과제를 내주셔서 다행이라고 생각한다...
그렇지만 아직 회원가입 구현하는 코드가 해석이 제대로 되지 않아 조금 더 자세하게 해석을 해볼려고 한다.
<bash />
public void signup(SignupRequestDto requestDto) {
String username = requestDto.getUsername();
String password = passwordEncoder.encode(requestDto.getPassword()); // 비밀번호 암호화
// 회원 중복 확인
Optional<User> checkUsername = userRepository.findByUsername(username);
if(checkUsername.isPresent()) {
throw new IllegalArgumentException("중복된 사용자가 존재합니다.");
}
// 사용자 등록
User user = new User(username, password);
userRepository.save(user);
}
[비밀번호 암호화]
- requestDto.getPassword() 를 통해 비밀번호를 가져온다.
- passwordEncoder.encod() 를 사용하여 비밀번호를 암호화 한다.
[회원 중복 확인]
- Optional타입은 null을 체크하기 위해서 만들어진 타입이다.
- entity에서 username을 고유한 값으로 받고 있기때문에 중복이 되면 안된다.
- userRepositoty.findByUsername(username) : userRepository에 만들어 놓은 쿼리 메서드를 사용
<bash />public interface UserRepository extends JpaRepository<User, Long> { Optional<User> findByUsername(String username); }
- checkUsername.isPresent() : 사용자 이름이 이미 존재하는지 true,false값으로 확인하여 존재하는 경우에는 IllegalArgumentException을 던져서 중복 사용자 처리
[사용자 등록]
- 중복된 사용자가 없으면 User 객체를 생성(등록을 하려면 entity class 객체를 생성해야함)하여 사용자 이름과 암호화된 비밀번호는 설정
- userRepository.save(user) : 사용자 저장
반응형
'study > study_spring' 카테고리의 다른 글
[TIL] 좋아요 기능 구현 (Java) (0) | 2023.07.12 |
---|---|
[TIL] 게시물 조회 메서드 (+댓글) (0) | 2023.07.11 |
[TIL] @Builder (0) | 2023.06.22 |
[TIL] IntelliJ IDEA에서 Gradle을 인식 못했을 때 (0) | 2023.06.21 |
[TIL] Query Method 기능 사용하기 (0) | 2023.06.16 |