유튜버 개발자 유미님의 강의 영상을 참고 했습니다.

1) 외부에서 POST 요청으로 폼 데이터가 들어온다.
2) Controller 에서 DTO 타입으로 받고 Service의 회원가입 프로세스를 호출한다.
3) 프로세스에서 문제가 없으면 Service에서 User Entity를 저장한다.
@Entity
@Data
public class User {
@Id // PK
@GeneratedValue(strategy = GenerationType.IDENTITY) // auto_increment
private int id;
private String email;
private String password;
private String name;
private String role;
}
@PostMapping("/join")
public String join(JoinDto joinDto) {
userService.join(joinDto);
return "ok";
}
UserController에서 회원가입 프로세스를 post 요청으로 폼 데이터를 받는다.
JoinDto는 회원가입에만 필요한 User Entity의 속성을 갖는 클래스다.
/** 회원가입 프로세스 **/
public boolean join(JoinDto joinDto) {
String email = joinDto.getEmail();
String password = joinDto.getPassword();
String name = joinDto.getName();
boolean isExist = userRepository.existsByEmail(email); // 이메일로 회원가입 되어있는지 확인
if(isExist) { // 사용중
return false;
}
User user = new User();
user.setEmail(email);
user.setPassword(bCryptPasswordEncoder.encode(password)); // 패스워드는 꼭 암호화
user.setName(name);
user.setRole("ROLE_ADMIN"); // 임시 역할
userRepository.save(user); // 실제 DB 저장
return true;
}
public interface UserRepository extends JpaRepository<User, Integer>{ // 사용할 entity, pk 데이터 타입
Boolean existsByEmail(String email); // 해당 이메일로 가입한 USER가 있는지 확인
}
Jpa 방식에서 existsBy로 시작하면 뒤에 오는 컬럼명으로 데이터 존재 유무를 반환할 수 있다.

아직 프론트가 없으니까 postman으로 api 서버에 요청을 보내봤다.

비밀번호가 암호화 되어 들어갔다.
이렇게 회원가입 요청은 끝