model/Users.java
@Entity
@Table(name = "users")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String username;
private String password;
}
repository/UserRepository.java
@Repository
public interface UserRepository extends JpaRepository<User, Long> {
Optional<User> findByUsername(String username);
}
service/UserService.java
@Service
public class UserService {
private final UserRepository userRepository;
public UserService(UserRepository userRepository) {
this.userRepository = userRepository;
}
public User registerUser(User user) {
// 비밀번호 강도 확인
if (!isPasswordStrong(user.getPassword())) {
throw new IllegalArgumentException("비밀번호는 최소 8자 이상이어야 합니다.");
}
// 중복 사용자명 확인 (UserRepository의 findByUsername 메서드 사용)
Optional<User> existingUser = userRepository.findByUsername(user.getUsername());
if (existingUser.isPresent()) {
throw new IllegalArgumentException("이미 사용 중인 사용자명입니다.");
}
// 필수 필드 검사
if (user.getUsername() == null || user.getUsername().isEmpty() ||
user.getPassword() == null || user.getPassword().isEmpty()) {
throw new IllegalArgumentException("사용자명과 비밀번호는 필수 입력값입니다.");
}
// 이메일 유효성 검사 등 추가 검사가 필요한 경우도 추가 가능
// 유효성 검사를 통과한 경우 사용자 저장
return userRepository.save(user);
}
private boolean isPasswordStrong(String password) {
// 비밀번호 강도 확인 로직 추가 (예: 최소 길이, 특수 문자 포함 등)
return password != null && password.length() >= 8;
}
}
controller/UserController.java
@RestController
@RequestMapping("/api/users")
public class UserController {
private final UserService userService;
public UserController(UserService userService) {
this.userService = userService;
}
@PostMapping("/register")
public ResponseEntity<User> registerUser(@RequestBody User user) {
User newUser = userService.registerUser(user);
return new ResponseEntity<>(newUser, HttpStatus.CREATED);
}
}
'개발 > Java' 카테고리의 다른 글
vscode에서 spring boot 시작하기 (0) | 2023.11.10 |
---|---|
7일차 - 객체지향프로그래밍3 ,상속 (0) | 2019.01.15 |
6일차 - 객체지향프로그래밍2 (0) | 2019.01.09 |
5일차 - 객체지향 프로그래밍 (0) | 2019.01.08 |
4일차 - 제어문,문자열,배열 (0) | 2019.01.07 |