Hello

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)
}

 

블로그의 정보

Hello 춘기's world

볼빵빵오춘기

활동하기