-
[TIL] Spring과 Lombok의 AnnotationTIL(Today I Learned) 2022. 12. 14. 20:30
*20221224의 회고
오늘은 저번주에 확실히 해두지 못했던 어노테이션의 의미들과, 오늘 공부한 레이어드 아키텍처에 대해 정리해보려 한다.
- 레이어드 아키텍처 패턴
- Presentation 계층
- 사용자와 상호 작용 처리 계층
- CLI, HTTP, HTML 처리 등을 담당
- HTTP 요청, HTML 렌더링에 대해 알고 있는 계층
- MVC(Model, View, Controller)도 이 계층에 속함
- 스프링 부트에서 @Controller 어노테이션 사용
- Domain(Business of Service) 계층
- 서비스/시스템의 핵심 로직
- 유효성 검사 및 계산을 포함하는 Business 논리 계층
- 애플리케이션이 수행해야 하는 도메인과 관련된 작업들을 담당
- 입력/저장된 데이터를 기반으로 계산
- Presentation 계층에서 받은 데이터의 유효성 검사
- 어떤 Data Access를 선택할 지 결정
- 스프링 부트에서 @Service 어노테이션 사용
- Data Access 계층
- DAO 계층
- Database / Message Queue / 외부 API와의 통신 등을 처리
- 데이터 베이스 또는 원격 서비스에서 영구 데이터를 관리하는 방법을 분류하는 데이터 접근 계층
- 스프링 부트에서 @Repository 어노테이션 사용
- Presentation 계층
- Annotation : 클래스와 메서드에 추가하여 특별한 의미, 기능을 부여해주는 주석 (초능력 부여해주는 느낌)
- Spring Boot
- @Controller : Spring에게 해당 클래스가 Controller의 역할을 한다고 알려줌
- @Test : JUnit에서 테스트 할 대상을 표시
- @ResponseBody : 메서드에서 리턴되는 값이 View로 출력되지 않고 HTTP ResponseBody에 직접 쓰여지게 됨. return 시에 json, xml과 같은 데이터를 return 함.
- @RequestMapping : 요청에 대해 어떤 Controller, 어떤 메서드가 처리할 지를 맵핑하기 위한 어노테이션
- @GetMapping
- GET 요청을 하는 API의 어노테이션
- 데이터를 가져올 때 사용
- @PostMapping
- POST 요청을 하는 API의 어노테이션
- 데이터를 게시할 때 사용
- @PutMapping
- PUT 요청을 하는 API의 어노테이션
- 데이터를 수정할 때 사용
- @DeleteMapping
- DELETE 요청을 하는 API의 어노테이션
- 데이터를 삭제할 때 사용
- @PatchMapping
- PATCH 요청을 하는 API의 어노테이션
- 데이터를 수정할 때 사용
- @PutMapping과 PatchMapping의 차이 : Put은 데이터 전체를 갱신, Patch는 수정하는 영역의 데이터만 갱신
- @RequestParam
- URL에 전달되는 파라미터를 메서드의 인자와 매칭시켜 파라미터를 받아서 처리할 수 있는 어노테이션
- Json 형식의 Body를 MessageConverter를 통해 Java 객체로 변환시킴
- @RequestBody
- Body에 전달되는 데이터를 메서드의 인자와 매칭시켜 데이터를 받아서 처리할 수 있는 어노테이션
- 클라이언트가 보내는 HTTP 요청 본문(Json, XML 등)을 Java 객체로 변환
- @PathVariable
- URI를 이용해 파라미터를 처리
- @RequestMapping의 URL 정의 부분과 메서드 내의 Parameter 부분에 정의하여 사용 가능
- @RequestMapping 어노테이션 값으로 {템플릿 변수}를 사용
- @PathVariable 어노테이션을 이용해서 {템플릿 변수}와 동일한 이름을 갖는 파라미터 추가
- Spring Boot
@GetMapping(path = "/user/{userId}") public User userBean(@PathVariable String userId) { return new User(userId); }
- Lombok : 코드를 크게 줄여주어 가독성을 크게 높일 수 있는 라이브러리
- @Setter : 클래스의 모든 필드의 Setter 메서드를 생성해 줌
- @Getter : 클래스의 모든 필드의 Getter 메서드를 생성해 줌
- @AllArgsConstructor : 클래스의 모든 필드 값을 파라미터로 받는 생성자를 추가해줌
- @NoArgsConstructor : 클래스의 기본 생성자를 자동으로 추가해줌
- @RequiredArgsConstructor : 클래스의 멤버변수 중 final 키워드, 혹은 lombok 어노테이션인 @NonNull이 붙은 멤버변수만을 받는 생성자를 추가해줌
'TIL(Today I Learned)' 카테고리의 다른 글
[TIL] 스프링 입문 강의 복습하기... (0) 2022.12.16 [TIL] JPA 어노테이션 (0) 2022.12.15 [TIL] 안전지대 찾기 알고리즘 (0) 2022.12.13 [TIL] Entity, DTO, 영속성 컨텍스트 (0) 2022.12.12 [TIL] 코딩테스트 문제풀이 스터디 (0) 2022.12.09 - 레이어드 아키텍처 패턴