-
@RequiredArgsConstructor 가 하는 일스터디 노트 2023. 10. 18. 16:55
Lombok 라이브러리는 정말 강력하지요.
Lombok을 통해 우리는 반복적으로 작성하는 보일러코드들에게서 자유로워질 수 있었습니다.
최근에 Lombok의 @RequiredArgsConstructor에 대해 스터디 할 일이 생겼었습니다.
대체 얘는 왜 어떻게 코드를 이처럼 간편하게 만들어 줄 수 있는걸까요?
해당 애노테이션의 설명글을 참고해보면 이 애노테이션이 하는 일을 알 수 있습니다.
1. 필수 인수를 사용해 생성자를 생성합니다.
2. 여기서 말하는 필수 인수는 @NonNull과 같은 제약조건 또는 final field를 말합니다.
이처럼 해당 애노테이션을 사용하면 불필요하게 생성자를 만들어 줄 필요가 없으며, 이를 통해 Component들에선 보다 간편하게 주입방식을 구현할 수 있게 됩니다.
@RestController @RequiredArgsConstructor @RequestMapping("/my-controller") public class SessionRestController { // Autowired components... private final MyService myService; ... }
이 뿐만이 아닙니다. 기본값을 갖는 Enum을 선언하는데도 손쉽게 활용할 수 있습니다.
@Getter @RequiredArgsConstructor public enum ExceptionCode implements ErrorCode { // Exception Codes INTERNAL_SERVER_ERROR(HttpStatus.INTERNAL_SERVER_ERROR, "Internal server error...", HttpStatus.INTERNAL_SERVER_ERROR.value()), INTERNAL_IO_ERROR(HttpStatus.INTERNAL_SERVER_ERROR, "Internal Server IO Exception...", HttpStatus.INTERNAL_SERVER_ERROR.value()), RESOURCE_NOT_FOUND(HttpStatus.NOT_FOUND, "Resource not found...", HttpStatus.NO_CONTENT.value()) ; private final HttpStatus httpStatus; private final String message; private final int code; }
이를 통해 Enum을 만들 때에도 HttpStatus, String, int를 보유하고 있는 열거형 데이터를 만들어낼 수 있습니다.
'스터디 노트' 카테고리의 다른 글
스프링 빈, 자바 빈, DTO, VO의 차이점과 불변객체(Immutable Object) (0) 2023.10.20 Transaction이 뭐길래? (1) 2023.10.19 스프링 빈 스코프에 대하여 (0) 2023.10.18 @RestControllerAdvice에 대하여 (0) 2023.10.18 [Java] 불변 단 건 리스트는 Collections.singletonList() 를 활용해보세요. (0) 2023.10.17