diff --git a/keyword/chapter07/keyword.md b/keyword/chapter07/keyword.md new file mode 100644 index 0000000..205b4c7 --- /dev/null +++ b/keyword/chapter07/keyword.md @@ -0,0 +1,39 @@ +## 어노테이션 정리 +- `@Getter`: 클래스의 모든 필드에 getter 메소드 자동 생성 +- `@NoArgsConstructor`: 매개변수가 없는 기본 생성자 자동 생성 + +- `@AllArgsConstructor`: 모든 필드를 파라미터로 받는 생성자 자동으로 생성 +- `@JsonPropertyOrder`: JSON 직렬화 시 필드의 출력 순서를 지정 +- `@JsonInclude(JsonInclude.Include.NOT_NULL)`: null인 필드를 JSON에 포함하지 않도록 한다 + + +### Builder +builder(): (복습)빌더패턴 구현 메서드, 클래스에 대한 빌더 인스턴스를 반환하여 유연하게 객체를 생성할 수 있게 한다. +반환된 빌더 객체를 사용해 필요한 필드를 지정할 수 있고 각 필드를 설정하는 메서드는 빌더 객체 자체를 반환하여, 메서드 체이닝 방식으로 필드 설정 후 build()메서드를 호출하여, 설정된 필드들로 객체를 생성 + +우리가 만드는 인스턴스는 모두 빌더 패턴을 쓴다고 생각하면 편하다. + + +## 내용 정리 +`public static class`를 쓰는 이유는 다음과 같다. +> DTO는 수많은 곳에서 사용되기 때문에, static class로 만들면 매번 class파일을 만들 필요 없이 범용적으로 DTO를 사용 가능 + + +vaildation(유효성검증): 데이터가 특정 조건을 만족하는지 확인하고, 입력된 값이 올바른 형식인지 검증하는 과정이다. 입력 데이터가 유효한지, 비즈니스 로직에 맞는지, 보안상 문제는 없는지 등을 체크한다. +자바에서 사용하기 위해서는 관련 기능을 사용하기 위한 의존성을 추가해주어야 한다. + +### `RestControllerAdvice` +어노테이션 형태로 사용되며, 예외처리에 쓰인다. `@RestController`가 붙은 대상에서 Exception이 발생하는 것을 감지하는 역할을 한다. + +이를 사용하면 편한 이유는 다음과 같다. +- 모든 컨트롤러에서 발생하는 예외를 한곳에서 처리할 수 있게 해준다. 예외가 발생할 때 마다 컨트롤러에 예외 처리를 개별적으로 추가할 필요가 없어진다. +- 종복된 예외처리 로직을 작성하지 않아도 되어 코드 중복을 줄인다. +- 모든 예외에 대해 일관된 형식의 응답을 보낼 수 있다. +- 특정 예외 유형에 대해서만 처리하거나, 특정 패키지or클래스에만 적용하도록 할 수도 있다. + +### Lombok +자바의 반복적인 코드 작성을 줄여주는 라이브러리로, 어노테이션을 사용하여 Getter, Setter, Constructor, Builder, toString, EqualsAndHashCode 등 자주 사용하는 메서드와 코드를 자동으로 생성해준다. + +작동방식 : 컴파일 시 바이트코드를 조작하여 자동으로 메서드를 추가하는 방식이기 때문에 실제 코드 파일에는 나타나지 않고, 컴파일된 클래스 파일에 생성된다. + +첫줄에서 정리해둔 어노테이션의 대부분이 Lombok 라이브러리에 속한다. \ No newline at end of file diff --git a/mission/chapter07/image-1.png b/mission/chapter07/image-1.png new file mode 100644 index 0000000..3c07d5e Binary files /dev/null and b/mission/chapter07/image-1.png differ diff --git a/mission/chapter07/image-10.png b/mission/chapter07/image-10.png new file mode 100644 index 0000000..49afd2b Binary files /dev/null and b/mission/chapter07/image-10.png differ diff --git a/mission/chapter07/image-11.png b/mission/chapter07/image-11.png new file mode 100644 index 0000000..c443c94 Binary files /dev/null and b/mission/chapter07/image-11.png differ diff --git a/mission/chapter07/image-12.png b/mission/chapter07/image-12.png new file mode 100644 index 0000000..ca83d4e Binary files /dev/null and b/mission/chapter07/image-12.png differ diff --git a/mission/chapter07/image-13.png b/mission/chapter07/image-13.png new file mode 100644 index 0000000..1249f3f Binary files /dev/null and b/mission/chapter07/image-13.png differ diff --git a/mission/chapter07/image-2.png b/mission/chapter07/image-2.png new file mode 100644 index 0000000..01b6e24 Binary files /dev/null and b/mission/chapter07/image-2.png differ diff --git a/mission/chapter07/image-3.png b/mission/chapter07/image-3.png new file mode 100644 index 0000000..e1816f3 Binary files /dev/null and b/mission/chapter07/image-3.png differ diff --git a/mission/chapter07/image-4.png b/mission/chapter07/image-4.png new file mode 100644 index 0000000..6e469c2 Binary files /dev/null and b/mission/chapter07/image-4.png differ diff --git a/mission/chapter07/image-5.png b/mission/chapter07/image-5.png new file mode 100644 index 0000000..7c658e5 Binary files /dev/null and b/mission/chapter07/image-5.png differ diff --git a/mission/chapter07/image-6.png b/mission/chapter07/image-6.png new file mode 100644 index 0000000..125200a Binary files /dev/null and b/mission/chapter07/image-6.png differ diff --git a/mission/chapter07/image-7.png b/mission/chapter07/image-7.png new file mode 100644 index 0000000..36903eb Binary files /dev/null and b/mission/chapter07/image-7.png differ diff --git a/mission/chapter07/image-8.png b/mission/chapter07/image-8.png new file mode 100644 index 0000000..1af82c8 Binary files /dev/null and b/mission/chapter07/image-8.png differ diff --git a/mission/chapter07/image-9.png b/mission/chapter07/image-9.png new file mode 100644 index 0000000..f9859e1 Binary files /dev/null and b/mission/chapter07/image-9.png differ diff --git a/mission/chapter07/image.png b/mission/chapter07/image.png new file mode 100644 index 0000000..a790c91 Binary files /dev/null and b/mission/chapter07/image.png differ diff --git a/mission/chapter07/mission.md b/mission/chapter07/mission.md new file mode 100644 index 0000000..e69de29