ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [TIL] Spring과 Lombok의 Annotation
    TIL(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 어노테이션 사용

     

    • 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 어노테이션을 이용해서 {템플릿 변수}와 동일한 이름을 갖는 파라미터 추가
    @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이 붙은 멤버변수만을 받는 생성자를 추가해줌
Designed by Tistory.