어제부터 spring boot 가 시작되었다!

API

  •  👉 클라이언트 - 서버 간의 약속입니다.
  • 클라이언트가 정한대로 서버에게 요청(Request)을 보내면, 서버가 요구사항을 처리하여 응답(Response)을 반환합니다.

REST

  • 👉 REST란, 주소에 명사, 요청 방식에 동사를 사용함으로써 의도를 명확히 드러냄을 의미합니다.

 

[ Lombok의 장점 ]

  • 어노테이션 기반의 코드 자동 생성을 통한 생산성 향상
  • 반복되는 코드 다이어트를 통한 가독성 및 유지보수성 향상
  • Getter, Setter 외에 빌더 패턴이나 로그 생성 등 다양한 방면으로 활용 가능

Lombok을 사용하면 정말 많은 이점을 얻을 수 있다. 과거에는 IntelliJ에서 롬복 플러그인을 모든 팀원이 설치해주어야 한다는 단점도 있었지만 현재는 IntelliJ의 기본 플러그인이 되면서 바로 편리하게 이용가능하게 되었다.

@Getter @Setter ]

Lombok에서 가장 자주 활용하는 어노테이션이다. @Getter와 @Setter를 클래스 이름 위에 적용시키면 모든 변수들에 적용이 가능하고, 변수 이름 위에 적용시키면 해당 변수들만 적용 가능하다. 아래의 예제에서는 모든 변수들에 대해 Getter 메소드를 만들고 상호병 변수에 대해서만 Setter 메소드를 만들어보도록 하겠다.

@AllArgsConstructor ]

@AllArgsConstructor는 모든 변수를 사용하는 생성자를 자동완성 시켜주는 어노테이션이다.

[ @NoArgsConstructor ]

@NoArgsConstructor는 어떠한 변수도 사용하지 않는 기본 생성자를 자동완성 시켜주는 어노테이션이다.

[ @RequiredArgsConstructor ]

@RequiredArgsConstructor는 특정 변수만을 활용하는 생성자를 자동완성 시켜주는 어노테이션이다. 생성자의 인자로 추가할 변수에 @NonNull 어노테이션을 붙여서 해당 변수를 생성자의 인자로 추가할 수 있다. 아니면 해당 변수를 final로 선언해도 의존성을 주입받을 수 있다.

[ @EqualsAndHashCode ]

@EqualsAndHashCode 어노테이션을 활용하면 클래스에 대한 equals 함수와 hashCode 함수를 자동으로 생성해준다.

[ @ToString ]

@ToString 어노테이션을 활용하면 클래스의 변수들을 기반으로 ToString 메소드를 자동으로 완성시켜 준다. 출력을 원하지 않는 변수에 @ToString.Exclude 어노테이션을 붙여주면 출력을 제외할 수 있다. 또한 상위 클래스에 대해도 toString을 적용시키고자 한다면 상위 클래스에 @ToString(callSuper = true) 를 적용시키면 된다. 

\

[ @Data ]

@Data 어노테이션을 활용하면 @ToString, @EqualsAndHashCode, @Getter, @Setter, @RequiredArgsConstructor를 자동완성 시켜준다. 실무에서는 너무 무겁고 객체의 안정성을 지키기 때문에 @Data의 활용을 지양한다.

[ @Builder ]

@Builder 어노테이션을 활용하면 해당 클래스의 객체의 생성에 Builder패턴을 적용시켜준다. 모든 변수들에 대해 build하기를 원한다면 클래스 위에 @Builder를 붙이면 되지만, 특정 변수만을 build하기 원한다면 생성자를 작성하고 그 위에 @Builder 어노테이션을 붙여주면 된다.

[ @Delegate ]

@Delegate 어노테이션은 한 객체의 메소드를 다른 객체로 위임시켜 준다.

[ @Log 관련 어노테이션 ]

@Log4j2와 같은 어노테이션을 활용하면 해당 클래스의 로그 클래스를 자동 완성 시켜준다. @Log 관련 어노테이션을 활용한 예제는 아래와 같다.

@RestController
@RequestMapping(value = "/store")
@Log4j2
public class StoreController {

    @GetMapping(value = "/log")
    private ResponseEntity log(){
        log.error("Error");
        return ResponseEntity.ok().build();
    }

}

출처: https://mangkyu.tistory.com/78 [MangKyu's Diary:티스토리]

 

Spring

 

  • Controller 는 제일 바깥 쪽에서 요청을 받고, 응답을 되돌려주는 역할을 합니다.
  • Service 는 중간에서 구체적인 작업 순서를 결정하고요.
  • Repository 는 DB와 직접 소통함으로써 자료를 생성하고, 조회하고, 변경하고, 삭제합니다.
  • 그리고 각 레이어 간에는 절대 Entity를 직접 사용하지 않고, DTO 라는 택배상자를 만들어 사용합니다.

'항해 99(9기) > 항해 일일' 카테고리의 다른 글

항해 99 16일차  (0) 2022.10.04
항해 99 15일차  (0) 2022.10.03
항해 12일 차  (0) 2022.09.30
항해 11일 차  (0) 2022.09.29
항해 10일차  (0) 2022.09.28

+ Recent posts