멋사 Backend 45일차 🦁

신재원·2023년 6월 23일

📚 Spring

파일 핸들링

  • 이전 블로그를 보게되면 JSON 기반의 데이터를 주로 사용했던것을 볼수 있습니다.
  • 저희가 사용하는 서비스를 생각해보면, 파일을 다루지 않는 서비스는 거의 없다고 볼수 있습니다.

정적(Static) 파일

  • 사용자의 요청에 따라 비즈니스 로직을 처리하고, 그 결과에 따른 결과
    (View 등)를 보여주는 작업이었습니다.
  • 반면 별다른 변환 처리 과정 없이 사용자에게 보여줘야 하는 경우도 있습니다.
    (이미지 파일, CSS 파일 등)
  • http://localhost:8080/image.png 로 정적파일의 응답을 보내줍니다.
  • 이런 정적파일의 경로를 바꾸고 싶다면 ?
    • yml / properties 파일에서 설정을 추가할수 있습니다.
spring :
  mvc:
    static-path-pattern : /static/**

http://localhost:8080/static/image.png 요청 URL이 변경됩니다.

절대경로 vs 상대경로

/staticstatic 은 다르다고 합니다. (/의 여부)

  • 절대경로 : 경로의 처음부터 끝까지 완전히 적은 경로 입니다.
  • 상대 경로 : 내현재 위치에서 상대적으로 경로를 지정합니다.

📢 예외 핸들링

  • 예외 핸들링 같은 경우는 필요한 경우에 쓰면 될것 같다고 합니다.
    (잘하면 좋고 못해도 괜찮다.)

➡ 가장 간단한 예외처리 방법
(ResponseStatusException 을 사용합니다)
(전체 프로젝트에서 예외처리를 적용하기 어렵고, 똑같은 코드를 반복해야 함)

if (!optionUser.ispresent())
		throw new ResponseStatusException(HttpStatus.NOT_FOUND);

@ExceptionHandler & @RestControllerAdvice

@ExceptionHandler 는 컨트롤러 단위로만 작동합니다.

  • 예외를 모아두기위한 컴포넌트의 일종입니다.
    (프로젝트 전반적으로 발생하는 예외를 관리하기 편합니다.)

엔티티 공통 속성

@EntityListeners(AuditingEntityListener.class)

  • 엔티티의 변화를 지켜볼 클래스
    (엔티티의 생성과 수정을 감시합니다.)
    (자동으로 등록일, 수정일 등 입력해 주는 기능)

@MappedSuperclass

엔티티 별로 공통 필드가 존재하는 경우 불 필요한 중복 코드를 제거하기 위해 사용한다.

  • 추후 뒤에서 프로젝트 하면서 자세하게 다룰 예정이라고 합니다.

0개의 댓글