[우아한테크코스] 5월 16일 TIL

less than 1 minute read

[Spring] valid 적용

  • request에 적용
    @RequestBody @Valid SectionRequest sectionRequest

  • request 멤버변수에 필요에 따른 어노테이션 작성
      @NotBlank(message = "이름을 유효하게 입력해주세요")
      private String name;
    
      @NotBlank(message = "색상을 유효하게 입력해주세요")
      private String color;
    
      @NotNull(message = "상행역을 입력해주세요")
      private Long upStationId;
    
      @NotNull(message = "하행역을 입력해주세요")
      private Long downStationId;
    
      @Min(value = 1, message = "거리는 1 이상이어야 합니다")
      private int distance;
    
  • exceptionHandler로 예외 잡기
      @ExceptionHandler(MethodArgumentNotValidException.class)
      public ResponseEntity<String> handleBindingException(MethodArgumentNotValidException methodArgumentNotValidException) {
          String message = methodArgumentNotValidException.getFieldErrors()
              .stream()
              .map(DefaultMessageSourceResolvable::getDefaultMessage)
              .collect(Collectors.joining(System.lineSeparator()));
          return ResponseEntity.badRequest().body(message);
      }
    

    예외 메시지까지 검증

[Spring] service layer

service layer의 고찰

요약

  1. service<->dao는 1:1 매핑
    각 서비스가 자신의 dao만 매핑하는 방안이 있다.
    비즈니스 로직에 필요한 데이터 유효성 검사, 무결성 검사 등을 하지 않고 repository에서 데이터를 만지면 데이터 무결성 보장이 되지 않는다.
    그렇다고 repository에서 비즈니스 로직(검증)이 있는 것도 옳지 않다.
  2. service 간의 참조
    완벽한 계층구조라면 순환참조 없이 서비스들이 참조를 해도 된다.