이전 포스팅
구현해보기
Spring Boot를 사용하여 간단한 사용자 등록 시스템을 구현하는 방법을 상세히 살펴보겠습니다.
코드는 RegistrationController, UserDTO, User 엔터티, UserRepository로 구성되어 있습니다.
각 부분을 자세히 살펴보면서 어떻게 동작하는지 알아보겠습니다.
UserDTO: 데이터 전송을 위한 객체
- UserDTO는 클라이언트로부터 전송된 사용자 등록 데이터를 저장하는 객체입니다.
- 아이디, 비밀번호, 생년월일, 닉네임, 프로필 사진 URL 등의 정보를 담고 있습니다.
- 하지만 이번 구현에는 간단한 정보 등록이므로 DTO를 사용하지 않고 구현하겠습니다
import lombok.Data;
import java.time.LocalDate;
@Data
public class UserDTO {
private String userid;
private String password;
private LocalDate birthdate;
private String nickname;
private String profilePictureUrl;
}
User Entity: 사용자 정보를 담는 모델 클래스
- 엔터티는 JPA를 사용하여 데이터베이스에 저장되는 사용자 정보를 표현합니다.
- 각 필드에는 사용자의 아이디, 비밀번호, 생년월일, 닉네임, 프로필 사진 URL을 나타냅니다.
자세한 설명
- @Table(name = "user5") -> 테이블 이름은 user5로 하겠습니다.
- @GeneratedValue(strategy = GenerationType.IDENTITY) -> PK값을 자동으로 지정하는 어노테이션입니다.
(특히 데이테베이스에서 자동 증가되는 컬럼에 사용됩니다.)
import jakarta.persistence.*;
import lombok.Data;
import java.time.LocalDate;
@Entity
@Data
@Table(name = "user5")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(unique = true)
private String userid; // 아이디
@Column
private String password; // 비밀번호
@Column
private LocalDate birthdate; // 생년월일
@Column
private String nickname; // 닉네임
@Column
private String profilePictureUrl; // 프로필 사진 URL
// Getter, Setter, 생성자 등은 @Data로!
}
RegistrationController: 사용자 등록을 처리하는 컨트롤러
- Spring MVC에서 사용자 등록을 처리하는 컨트롤러로, 클라이언트로부터 전송된 사용자 정보를 받아와
JPA를 통해 데이터베이스에 저장하는 역할을 담당합니다.
자세한 설명
1. 엔드포인트
- @RestController: 이 클래스가 컨트롤러임을 선언하며, 각 메서드의 반환 값은 HTTP 응답으로 처리됩니다.
2. 의존성 주입
- UserService를 @Autowired 어노테이션을 통해 주입받습니다.
- 이는 사용자 등록과 관련된 비즈니스 로직을 처리하기 위해 필요한 서비스입니다.
3.사용자 등록 요청 처리
- registerUser 메서드는 클라이언트로부터 받은 사용자 데이터를 처리합니다.
- UserDTO를 통해 전송된 데이터를 추출하고, 이를 기반으로 신규 사용자를 등록합니다.
4. 중복 아이디 체크
- userService.isUseridExists(id)를(만들예정) 호출하여 사용자가 입력한 아이디가 이미 존재하는지 여부를 확인합니다
- 만약 이미 존재한다면 중복된 아이디로 간주하고 적절한 응답을 반환합니다.
5.사용자 등록
- userService.registerUser를 호출하여 사용자를 등록합니다.
등록이 성공하면 성공 메시지를 반환합니다.
만료된 키 등의 이유로 등록에 실패하면 실패 메시지를 반환합니다.
@RestController
public class RegistrationController {
@Autowired
private UserService userService;
@PostMapping("/register")
public ResponseEntity<String> registerUser(@RequestBody UserDTO userDTO) {
String id = userDTO.getUserid();
String password = userDTO.getPassword();
LocalDate birthdate = userDTO.getBirthdate();
String fullName = userDTO.getNickname();
String profilePictureUrl = userDTO.getProfilePictureUrl();
try {
// userid가 이미 존재하는지 확인
if (userService.isUseridExists(id)) {
return ResponseEntity.status(HttpStatus.CONFLICT).body("이미 존재하는 UserID입니다.");
}
User registeredUser = userService.registerUser(id, password, birthdate, fullName, profilePictureUrl);
if (registeredUser != null) {
return ResponseEntity.ok("정상적으로 회원가입 되었습니다.");
} else {
return ResponseEntity.status(HttpStatus.CONFLICT).body("만료된 키입니다.");
}
} catch (Exception e) {
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("서버 오류가 발생했습니다.");
}
}
}
오늘은 엔터티, DTO, 그리고 컨트롤러까지 살펴보았습니다.
그 다음 포스팅에서는 프로젝트의 핵심 부분에 해당하는 리파지토리와 서비스 계층을 자세히 살펴보겠습니다.
주의사항
데이터베이스에 따라 @GeneratedValue(strategy = GenerationType.IDENTITY)
위 코드의 지원 여부가 다를 수 있습니다.
또한 일부 데이터베이스에서는 자동 증가 기능을 지원하지 않을 수 있으니 주의해주시길 바랍니다.
'Back-End > Springboot' 카테고리의 다른 글
SpringBoot에서 Vue.js를 연동하고 실행해보자 (0) | 2024.05.04 |
---|---|
[Spring boot] 간단한 회원가입 코드 구현해보기_2 (0) | 2024.04.07 |
[Spring boot] 간단한 회원가입 구현해보기 (2) | 2024.03.09 |
[Spring boot] war배포시 404 ERROR 해결 방법 (8) | 2024.01.08 |
IntelliJ IDEA와 Git 연결하기 (0) | 2023.12.11 |