이전 포스팅
구현해 보기
이번 포스팅에서는 회원가입에서 Repository와 Service를 구현해 보도록 하겠습니다.
이들은 데이터베이스와의 로직을 처리하거나 상호작용하는데 중요한 역할을 합니다.
각 부분을 자세히 살펴보면서 어떻게 동작하는지 알아보겠습니다.
Repository: 데이터베이스와 상호작용을 처리하기 위한 클래스
- Repository에서는 CRUD 작업을 수행하는 메서드를 제공합니다.
- CRUD는 Create, Read, Update, Delete 작업을 뜻합니다.
- existsByUserid 메소드를 선언하여 사용자 ID가 이미 있는 경우에는 true, 없는 경우 false를 반환합니다.
import org.springframework.data.repository.CrudRepository;
public interface UserRepository extends CrudRepository<User, Long> {
boolean existsByUserid(String userid);
}
Database에서는 아래와 같은 코드일 것입니다.
SELECT COUNT(*) FROM User WHERE userid = :userid
UserService: 사용자 관련 비즈니스 로직을 처리하는 클래스
1. 사용자 id 확인
- isUseridExists(String Userid)는 주어진 사용자 id가 데이터베이스에 이미 저장되어 있는지 확인합니다.
2. 사용자 등록
- registerUser 메서드는 새로운 사용자를 등록합니다.
- 전송한 정보를 이용하여 User 객체를 생성하고 비밀번호는 암호화하여 저장합니다.
- 그 후 userRepository.save(newUser)를 사용하여 데이터베이스에 저장합니다.
- registerUser 메서드는 컨트롤러에서 사용한 userService.registerUser 부분을 말합니다.
- BCryptPasswordEncoder는 Spring Security에서 제공하는 비밀번호 암호화 도구입니다.
(해시 알고리즘 사용)
package com.example.blog.blog;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.stereotype.Service;
import java.time.LocalDate;
@Service
public class UserService {
@Autowired
private UserRepository userRepository;
// BCryptPasswordEncoder를 사용하여 비밀번호 암호화
private final BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder();
// 아이디 중복 확인
public boolean isUseridExists(String userid) {
return userRepository.existsByUserid(userid);
}
// 사용자 등록
public User registerUser(String id, String password, LocalDate birthdate, String nickname, String profilePictureUrl) {
User newUser = new User();
newUser.setUserid(id);
newUser.setPassword(passwordEncoder.encode(password)); // 비밀번호 암호화하여 저장
newUser.setBirthdate(birthdate);
newUser.setNickname(nickname);
newUser.setProfilePictureUrl(profilePictureUrl);
// 데이터베이스에 사용자 정보 저장
return userRepository.save(newUser);
}
}
테스트해 보기
이제 테스트를 해보겠습니다.
테스트는 postman에서 진행해 보도록 하겠습니다.
local환경에서 진행할 것이므로 post - http://localhost:8080/register를 넣어주시면 됩니다.
그 후 Body -> raw ->JSON을 선택해 준 후 값들을 넣어줍니다.(필드에 해당하는 값)
그리고 전송버튼을 눌러주시면 회원가입이 되신 것을 확인하실 수 있습니다.
데이터베이스에도 값들이 저장되며 패스워드 경우 해시함수로 저장됩니다.
만약에 userid가 이미 저장되어 있는 상태면 데이터베이스에 값들이 저장이 안 되고
아래와 같은 문구가 뜨는 것을 확인하실 수 있습니다.
'Back-End > Springboot' 카테고리의 다른 글
AOP 에 대해 알아보자 (0) | 2024.09.11 |
---|---|
SpringBoot에서 Vue.js를 연동하고 실행해보자 (0) | 2024.05.04 |
[Spring boot] 간단한 회원가입 코드 구현해보기 (0) | 2024.03.13 |
[Spring boot] 간단한 회원가입 구현해보기 (2) | 2024.03.09 |
[Spring boot] war배포시 404 ERROR 해결 방법 (8) | 2024.01.08 |