Skip to content

Commit

Permalink
Merge pull request #34 from SSUMC-6th/ming/#29
Browse files Browse the repository at this point in the history
[ming] Chpater08_API 응답 통일 & 에러 핸들러
  • Loading branch information
qzzloz authored Jun 23, 2024
2 parents 1509a4d + c4eec9e commit 9c487b6
Show file tree
Hide file tree
Showing 5 changed files with 59 additions and 0 deletions.
5 changes: 5 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
*.idea
.DS_Store
._.DS_Store
**/.DS_Store
**/._.DS_Store
37 changes: 37 additions & 0 deletions docs/chapter8/Ch08Keyword.txt
Original file line number Diff line number Diff line change
@@ -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: 해당 클래스의 로그 클래스를 자동완성
17 changes: 17 additions & 0 deletions src/mission/chapter8/Ch08 Mission.md
Original file line number Diff line number Diff line change
@@ -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
Binary file added src/mission/chapter8/에러응답테스트1.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added src/mission/chapter8/에러응답테스트2.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

0 comments on commit 9c487b6

Please sign in to comment.