#6 of Spring - 개발 시 유용한 "규칙 및 컨벤션" at MSA 환경

 by Spring Boot and JPA

MVC 레벨 메소드 등 명칭 규약

  • 컨트롤러 / Controller
    • 목록 조회 list
    • 상세 조회 detail
    • 저장 save
    • 수정 update
    • 삭제 delete
  • 서비스 / Service
    • getXXX
    • addXXX
    • updateXXX
    • deleteXXX
  • 레포지토리 / Repository
    • JPA 사용 시, JpaRepository 혹은 CrudRepository 상속하게 됨
    • 아래와 같은 내장 함수 그대로 사용 가능
      • findById
      • findAll
      • findOne
      • save
      • saveAndFlush
    • 복잡한 쿼리 및 동적 쿼리 실행이 필요한 경우
      • 별도 Custom 파일 생성
        • QueryDSL 활용
        • 조회
          • 조건절로 쓰일 엔티티의 컬럼명 포함
          • findByXXXAndXXX
        • 수정
          • 수정할 엔티티의 컬럼명 포함
          • updateXXX

통신 between Front Service and Back Service

  • API Response 규약 설정
    • request time
      • LocalDateTime
        • sss 밀리세컨즈까지 포함
        • ISO 기준
        • ex) yyyyMMddHHiiSSsss
    • 유니크한 값을 가지는 tracking / logging 목적의 문자열 필드
      • ex) UUID
    • status
      • http status
        • 400 = bad request
        • 500 = internal server error
        • 404 = page not found
        • 401 = unauthorized
          • spring security 등 인증 및 인가 실패 시 발생
        • 405 = method not allowd
          • 메소드 mapping 타입이 맞지 않는 경우 발생
            • @GetMapping 인데 Post 방식으로 요청한 경우
    • code
    • message
    • data
      • 제네릭 타입으로 설정
      • 실제 CRUD 작업 후, 결과물로서 도출되는 데이터들을 담을 필드
  • 통신 template 사용
    • Retrofit
      • okhttpclient 활용
      • 통신할 host URL 이 고정인 경우
        • retrofit @Bean 으로 등록해놓고 사용해도 됨
    • RestTemplate
  • 실패 및 예외 케이스 사전 정의
    • exception
      • GlobalExceptionHandler 생성
        • 해당 파일에서 모든 예외 발생 케이스 관리
          • @ExceptionHandler
          • 응답 규약은 기본적으로 API Response 와 동일
    • fail response
      • 기본적으로 exception 과 마찬가지로 GlobalExceptionHandler 에서 관리
      • 커스텀 에러 코드 및 예외 클래스 생성
        • RuntimeException 클래스 상속
        • 비즈니스 로직 단계에서 통신 실패 응답 시
          • throw new "생성한 커스텀 예외 클래스 호출"
            • 해당 예외가 호출되면 커스텀 에러 코드 호출
              • status "400"
              • code like "C000001"
              • message "인증에 실패하였습니다."



댓글