41. 회원가입 하기 두번째 완료
by 볼빵빵오춘기UserService
// 스프링이 컴포넌트 스캔을 통해 Bean에 등록을 해줌. IoC를 해준다. => 메모리에 띄어준다.
@Service
public class UserService {
@Autowired
private UserRepository userRepository;
@Transactional
public int 회원가입(User user){
try{
userRepository.save(user);
return 1;
}catch(Exception e){
e.prinStackTrace();
System.out.println("UserService - 회원가입 : "+e.getMessage());
}
return -1;
}
}
참고 - Service가 필요한 이유
트랜잭션을 관리하기 위함이다.
서비스 의미 때문이다.
더보기
- 하나의 update로는 서비스가 될 수 도있지만
- 위와 같이 송금서비스면 insert, update 이런게 여러 개 모이는 로직이 서비스가 될 수 있다.
- repository는 crud에서 하나씩 가능하지만
- 송금서비스와 같이 동시에 송금을 받는이와 보내는 이 둘 다 update가 commit이 필요한데 받은이쪽에서 문제가 생겨 금액이 update 되지않는다고 하면 각각의 트랜잭션에 rollback이 필요하다.
- 하지만 이것을 서비스화 시키면 송금을 받는이와 보내는 이 update를 하나의 트랜잭션으로 보고 하나라도 실패하면 각각의 rollback이 아닌 송금을 받는이와 보내는 이 update를 하나의 트랜잭션을 rollbak하면 된다.
UserApiController
- 매개변수로 User 가 오는데 form에 넘어오는건 username, password, email 뿐다.
- createTime과 id는 자동으로 넣어진다.
- 따라서 role은 추가로 넣어줘야한다.
@Autowired
private UserService userService;
@PostMapping("/api/user")
public ResponseDto<Integer> save(@RequestBody User user){
System.out.println("UserApiController save() 호출");
user.setRole(RoleType.User);
int result = userService.회원가입(user);
return new ResponseDto<Integer>(HttpStatus.OK.value(),result); // 자바 오브젝트를 JSON으로 변환해서 리턴(Jackson)
}
'강의 따라하기 > blog' 카테고리의 다른 글
43.44. 45 DB 격리수준 READ COMMIT & 정합성 문제 & REPEACTABLE READ (1) | 2024.01.02 |
---|---|
42. ResponseDto 수정 (0) | 2024.01.02 |
40. 회원가입 하기 Ajax 요청 (0) | 2024.01.02 |
38,39 Ajax를 사용하는 이유 첫번째, 두번째 (0) | 2024.01.02 |
37. 회원가입을 위한 기초세팅 (0) | 2024.01.02 |
블로그의 정보
Hello 춘기's world
볼빵빵오춘기