Lombok과 어노테이션

Red Culture·2021년 6월 28일

Lombok이란?

Java의 라이브러리로 반복되는 메서드(기본 생성자부터 getter/setter 메서드 등..)를 Annotation 을 사용해서 자동으로 작성해주는 라이브러리다. Lombok 을 이용해서 작성한 코드는 컴파일 과정에서 Annotation 을 이용해서 코드를 생성하고 이런 결과물이 .class 에 담기게 된다.

어노테이션

  • @Data - 생성자, getter/setter, equals(), hashCode() 등 재정의할 수 있는 모든 메서드들이 추가된다.
  • @NoArgsConstructor - 기본 생성자를 추가해준다.
  • @AllArgsConstructor - 모든 매개변수를 가지는 생성자가 추가된다.
  • @Autowired - 필요한 의존 객체의 “타입"에 해당하는 빈을 찾아 주입(DI - dependency injection)한다. (생성자/setter/필드)
    -> DI라고 하는 것은 기본적으로 싱글톤이므로 실제로 생성되는 객체는 하나이고 최초 생성 이후에 호출된 생성자는 최초의 생성자가 생성한 객체를 리턴하는 것이다. 그리고 @Autowired라고 부르는 곳에서 사용하겠다는 의미이다.
  • @RequiredArgsConstructor - final이 붙거나 @NotNull이 붙은 필드의 생성자를 자동으로 생성해주는 Lombok 어노테이션이다.
<기존 필드 주입 방식>
@Service
    public class UserService implements User {
    
        @Autowired
        private UserRepository userRepository;
    }
<@RequiredArgsConstructor 방식>
@Service
@RequiredArgsConstructor
    public class UserService implements User {
    
        private final UserRepository userRepository;
    }
  • @Transactional - 어노테이션이 적용된 범위에 대해(메서드 혹은 클래스) 하나의 트랜잭션으로 묶어주는 역할을 한다.
  • @Bean - 개발자가 직접 제어가 불가능한 외부 라이브러리 등을 bean으로 만들라고 할 때 사용한다.
  • @Component - 개발자가 직접 작성한 Class를 bean으로 등록하기 위한 어노테이션이다.
  • @PathVariable - 컨트롤러에서 파라미터를 받기 위한 방법으로 URL에서 각 구분자에 들어오는 값을 처리해주는 방법이다.
    @Override
    @GetMapping("/test/{id}") // localhost:8080/test/1
    public Header read(@PathVariable(name = "id") Long id) {
        return null;
    }
    
    @Override
    @GetMapping("/test/{id}", "/test") // localhost:8080/test/1, localhost:8080/test 둘다 가능
    public Header read(@PathVariable(name = "id") Long id) {
        return null;
    }

*참고 자료
https://dpdpwl.tistory.com/140
https://sky-h-kim.tistory.com/16
https://velog.io/@kdhyo/JavaTransactional-Annotation-%EC%95%8C%EA%B3%A0-%EC%93%B0%EC%9E%90-26her30h
https://galid1.tistory.com/494

profile
자기 개발, 학습 정리를 위한 블로그

0개의 댓글