diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9a5da43 --- /dev/null +++ b/.gitignore @@ -0,0 +1,5 @@ +*.idea +.DS_Store +._.DS_Store +**/.DS_Store +**/._.DS_Store \ No newline at end of file diff --git a/docs/chapter8/Ch08Keyword.txt b/docs/chapter8/Ch08Keyword.txt new file mode 100644 index 0000000..8b16e79 --- /dev/null +++ b/docs/chapter8/Ch08Keyword.txt @@ -0,0 +1,37 @@ +1. @JsonPropertyOrder +2. @JsonInclude +3. @RestController +4. @RequiredArgsConstructor +5. 의존성 주입 +6. @Slf4j +7. @RestControllerAdvice(annotations = {RestController.class}) + +1. Spring의 의존성 주입 +(1) 필드 주입 +- 의존성으로 주입하고자 하는 필드(주입 받는 필드 X)에 직접 @Autowired +- 단점 많음(외부 변경 힘듦 등등) + +(2) Setter Based 주입 +- setter 메서드에 @Autowired +- 단점: setter 메서드를 public으로 둬야함 -> 어디서든 변경 가능해짐 + +(3) 생성자 주입 +- 권장하는 방법 +- 클래스의 생성자 메서드에 파라미터를 통해 의존성 주입 +- 생성자가 1개만 존재하는 경우 @Autowired를 생략해도 자동으로 주입 + +2. IoC 컨테이너 +- IoC: 메서드, 객체의 호출작업을 개발자가 결정하는 것이 아니라, 외부(프레임워크)에서 결정하는 것 +- Ioc 컨테이너는 객체를 생성, 관리하고 의존성 주입도도 하는 컨테이너!! + +3. @RestControllerAdvice +- @ControllerAdvice의 역할을 수행(예외처리)하고 @ResponseBody를 통해 객체를 리턴하는 것 +- 컨트롤러에서 리턴하는 값이 응답 값의 body로 세팅되어 클라이언트에게 전달됨 + +4. lombok +- 어노테이션 기반으로 코드를 자동완성 해주는 라이브러리 +- @AllArgsConstructor: 모든 변수를 사용하는 생성자를 자동완성 +- @NoArgsConstructor: 어떠한 변수도 사용하지 않는 기본 생성자를 자동완성 +- @RequiredArgsConstructor: 특정 변수만을 활용하는 생성자를 자동완성 +- @Builder: 해당 클래스의 객체 생성 시 Builder 패턴을 적용 +- @Slf4J, Log4j2: 해당 클래스의 로그 클래스를 자동완성 \ No newline at end of file diff --git a/src/mission/chapter8/Ch08 Mission.md b/src/mission/chapter8/Ch08 Mission.md new file mode 100644 index 0000000..eac38a6 --- /dev/null +++ b/src/mission/chapter8/Ch08 Mission.md @@ -0,0 +1,17 @@ +## 8주차 미션 인증 + +1. RestControllerAdvice의 장점 + - @ControllerAdvice의 역할인 예외 처리를 수행해주기 때문에 컨트롤러에서 따로 예외처리를 할 필요가 없다. + - @ExceptionHandler를 사용하여 특정 예외에 대한 핸들러 메서드(에러 코드+에러메시지 등)를 정의할 수 있다. + - 여러 클래스에서 발생하는 예외를 하나의 예외 처리 로직으로 해결할 수 있다. @RestControllerAdvice가 선언된 클래스는 모든 컨트롤러에 적용되기 때문. +2. RestControllerAdvice가 없으면 불편한 점 + - 예외처리 로직이 여러 클래스에 반복적으로 들어갈 수 있다. + +![](./에러응답테스트1.png) +![](./에러응답테스트2.png) + +- 미션 목록 조회 API 명세서는 6주차에 작성 완료 + +Notion: https://www.notion.so/makeus-challenge/Chapter-8-API-eff00a2782664a998d8a1ffe190a5f64#c34d69fe5fb04dd58d827ca36500ee5b + +Github: https://github.com/qzzloz/SSUMC6th-spring-practice/tree/mission8 diff --git "a/src/mission/chapter8/\354\227\220\353\237\254\354\235\221\353\213\265\355\205\214\354\212\244\355\212\2701.png" "b/src/mission/chapter8/\354\227\220\353\237\254\354\235\221\353\213\265\355\205\214\354\212\244\355\212\2701.png" new file mode 100644 index 0000000..e5200cc Binary files /dev/null and "b/src/mission/chapter8/\354\227\220\353\237\254\354\235\221\353\213\265\355\205\214\354\212\244\355\212\2701.png" differ diff --git "a/src/mission/chapter8/\354\227\220\353\237\254\354\235\221\353\213\265\355\205\214\354\212\244\355\212\2702.png" "b/src/mission/chapter8/\354\227\220\353\237\254\354\235\221\353\213\265\355\205\214\354\212\244\355\212\2702.png" new file mode 100644 index 0000000..f196761 Binary files /dev/null and "b/src/mission/chapter8/\354\227\220\353\237\254\354\235\221\353\213\265\355\205\214\354\212\244\355\212\2702.png" differ