TIL_220721_강의용 실습 프로젝트 4

창고·2022년 7월 22일
0
post-custom-banner

들어가기에 앞서
실제 프로젝트 진행했던 코드 내용은 업로드하지 않았습니다

7. Business Logic 구현

(1) Service Layer 제작

  • @Service
    • 비즈니스 로직을 담당하는 컴포넌트
    • 도메인 모델(데이터)와 컨트롤 사이에 위치
    • 구현 방식
      • 인터페이스 + 클래스 : 정석
        • 인터페이스를 요구사항에 따른 기능 문서로 작성
        • 같은 기능을 하는 다양한 구현체를 작성할 니즈가 예상될 때 적합
      • 클래스
        • 실무에서 즐겨 사용됨
        • 인터페이스를 추가로 작성하는 수고를 덜게 됨
        • 컨트롤러 레이어와 결합도가 좀 더 증가하게 됨
  • service package 생성 후 EventService 생성 (클래스 방식으로 구현)
  • EventRepository 로 데이터 처리를 Service에서 분리시키기
  • repository package 및 EventRepository interface 생성
  • config package, RepositoryConfig class 생성 (EventRespoistory 인터페이스를 bean으로 만들기 위해)
  • EventRepository interface 구성
  • EventServiceTest

(2) Validation

  • implementation 으로 validation 직접 의존성 추가해야 함
  • Validation 관련 애노테이션
    • @Validated + 메소드 파라미터 검증
      메소드 파라미터에 validation annotation 직접 사용하여 검증
      • 클래스에 @Validated 필요
      • 발생 예외 : ConstraintViolationException, 직접 처리해줘야 하는 예외
      • ConfigurationProperties 클래스에도 적용 가능
    • @Valid + Data Object
      검증하려는 데이터 오브젝트에만 검증 로직, @Validated 필요 없음
      • 발생 예외 : MethodArgumentNotValidException
      • ResponseEntityExceptionHandler 지원 받을 수 있음
  • Validation 예제

(3) 오류 처리

  • parameterized test
    @ParameterizedTest > @MethodSource
  • @ParameterizedTest(name = "{}") 으로 subname 변경 가능
  • 예외 처리 입출력 테스트
profile
공부했던 내용들을 모아둔 창고입니다.
post-custom-banner

0개의 댓글