@Setter
@Getter
public class JoinDTO {
private String username;
private String password;
}
계층 간 데이터 전달을 위한 객체
데이터베이스와 직접적인 관계가 없다, 서버와 클라이언트 간 데이터 교환을 위해 사용
주로 요청 및 응답에 사용!
@Controller
@ResponseBody
public class JoinController {
private final JoinService joinService; // 주입
public JoinController(JoinService joinService) { // 생성자 주입방식 사용 권장!
this.joinService = joinService;
}
@PostMapping("/join")
public String joinProcess(JoinDTO joinDTO) {
joinService.joinProcess(joinDTO);
return "success";
}
}
@Service
public class JoinService {
private final UserRepository userRepository;
private final BCryptPasswordEncoder bCryptPasswordEncoder;
public JoinService(UserRepository userRepository, BCryptPasswordEncoder bCryptPasswordEncoder) {
this.userRepository = userRepository;
this.bCryptPasswordEncoder = bCryptPasswordEncoder;
}
public void joinProcess(JoinDTO joinDTO) {
String username = joinDTO.getUsername();
String password = joinDTO.getPassword();
Boolean isExist = userRepository.existsByUsername(username);
if (isExist) {
return;
}
UserEntity data = new UserEntity();
data.setUsername(username);
data.setPassword(bCryptPasswordEncoder.encode(password)); // encode해서 넣어야함
data.setRole("ROLE_ADMIN");
userRepository.save(data);
}
}
public interface UserRepository extends JpaRepository<UserEntity, Integer> {
}