-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Browse files
Browse the repository at this point in the history
[ming] Chpater08_API 응답 통일 & 에러 핸들러
- Loading branch information
Showing
5 changed files
with
59 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
*.idea | ||
.DS_Store | ||
._.DS_Store | ||
**/.DS_Store | ||
**/._.DS_Store |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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: 해당 클래스의 로그 클래스를 자동완성 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 |
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.