Unit 1~4을 진행하면서 궁금한 점

박채은·2022년 12월 25일
0

Spring

목록 보기
16/35

✔️ 인텔리제이에서 코드를 수정할때마다, 다시 main 메서드를 실행시켜줘야 하나요?

A) 스프링에서 지원하는 개발자 툴이 있는데, 이것을 받아서 사용하면 자동 실행을 해준다.
하지만 조금 시간이 오래걸려서 오히려 직접 실행시키는 게 빠를 때가 있어서 추천하진 않는다.


✔️ 스펙이란 게 정확히 어떤 의미인가요?

스펙 = 표준 사양 = 명세(Specification) = 인터페이스

우리가 이력서에 핵심만 써놓고 자세하게는 안 써둔 것처럼 인터페이스를 스펙이라고 할 수 있다.
인터페이스는 적혀있지만, 자세한 기능에 대해서는 아직 구현이 안 되어 있다.

즉, Java의 인터페이스로 사양이 정의되어 있기 때문에 표준 사양을 구현한 구현체는 따로 있다.


✔️ Controller 계층에서 @RestController를 선언해서 JSON 방식으로 반환이 될텐데 ResponseDto를 바로 반환하지 않고 ReponseEntity를 사용하는 이유는 무엇인가요?

반환값으로 어떤 객체가 들어올지도 모르고, Http Status도 같이 포함해주기 위해서 ReponseEntity를 사용한다.
즉 ResponseEntity를 사용하면, 좀 더 유연하고 많은 정보를 포함해서 리턴해줄 수 있기 때문에
(실무에서는 바로 DTO를 리턴하는 일도 많다고 한다.)


✔️ Mapper는 어떤 원리로 맵핑되나요?

DTO와 객체를 맵핑해줄 때, 객체와 DTO에는 각자 많은 필드들이 있을텐데 어떤 원리로 알맞게 짝을 지어주는지 궁금했다.

결론부터 말하면 타입변수명이 같은 필드끼리 맵핑시켜준다.

변수명이 다른 경우, @Mapping(source="orderId", target="id") 를 사용해서 양쪽 필드명을 지정해줄 수 있다.


✔️ Repository에는 왜 애너테이션을 붙이지 않나요?
Repository에는 애너테이션을 붙이지 않아도 Bean으로 등록된다.
내부적으로 Java의 리플렉션 기술과 Proxy 기술을 이용해서 애너테이션을 붙이지 않아도 Bean으로 등록된다.


✔️ Stub 이란?
매번 똑같은 고정된 데이터를 보내는 것

해당 API 기능이 완성되지 않았지만, 프론트엔드 단에 API를 제공해줘야 할 때 사용한다.(프론트엔드 분들은 원하는 대략적인 UI를 확인하기 위해서 더미 데이터라도 불러와서 테스팅해야 하기 때문에)


✔️ fetch 전략?


✔️ N+1 문제?


✔️ 헬퍼 클래스/유틸리티 클래스?

  • 헬퍼 클래스: 어떤 기능을 도와주는 역할을 하는 클래스
  • 유틸리티 클래스: 정적 메서드(static)와 변수만을 제공하는 클래스

클래스의 본래 목적은 "데이터와 데이터 처리를 위한 로직의 캡슐화"인데
유틸리티 클래스의 목적은 "비슷한 기능의 메서드와 상수를 모아 캡슐화"하는 것이다.


✔️ @RestControllerAdvice를 어떤 특정 Controller들에게만 적용할 수는 없나요?
(4개의 Controller가 있을 때, 그 중 3개의 Controller에게만 적용한다든지)

가능할 것으로 보인다. 포인트컷을 통해서 개발자가 처리 가능할 것 같다.
이 부분에 대해서는 따로 방법을 찾아볼 것!


0개의 댓글