Project/DARLING

8. Service

@RequiredArgsConstructor
@Service
public class DiaryRegisterService {

  private final CoupleRepository coupleRepository;
  private final DiaryRepository diaryRepository;
  private final UserRepository userRepository;

  public DiaryRegisterResponse addDiary(DiaryRegisterRequest diaryRegisterRequest) {

    Couple couple =
        coupleRepository
            .findByCoupleToken(diaryRegisterRequest.getCoupleToken())
            .orElseThrow(() -> new IllegalArgumentException("Invalid CoupleToken"));
    Diary diary =
        diaryRepository.save(
            Diary.builder().couple(couple).date(diaryRegisterRequest.getDate()).build());

    return DiaryRegisterResponse.builder().diaryId(diary.getId()).build();
  	}
  }

 

- ResponseEnitity 를 적용하고 싶었지만 프론트 작업이 들어가기 때문에 Response 는 똑같이 만들었다.( 대부분 그럴것,, )

 

@RequiredArgsConstructor

이 어노테이션은 초기화 되지않은 final 필드, @NonNull 이 붙은 필드에 대해 생성자를 자동으로 생성해줍니다.

위와 같이 Repogitory 에 final 을 붙여준 이유입니다. 

 

- 컴파일 시점에 누락된 의존성을 확인할 수 있다. 

- Spring에서 생성자가 1개인 경우 @Autowired를 생략할 수 있도록 도와준다.

- 해당 생성자는 @RequiredArgsConstructor 로 구현하였다.

 

 

반응형

'Project > DARLING' 카테고리의 다른 글

7. CI/CD 계획  (0) 2022.02.09
6. 무엇이 문제일까 ...  (0) 2022.01.25
5. Spring REST Docs 사용  (0) 2022.01.24
4. 연관관계 - OneToMany  (0) 2022.01.23
3. 연관관계 - ManyToOne  (0) 2022.01.23