minOS

의존관계 자동 주입(4) - Lombok과 최신 트렌드 본문

TIL/김영한의 스프링 핵심 원리

의존관계 자동 주입(4) - Lombok과 최신 트렌드

minOE 2024. 4. 18. 15:18
728x90

 

롬복 프로젝트에 추가하는 법

https://devgoat.tistory.com/14

 

[Spring Boot] Lombok 추가하기. (Intellij, Gradle)

■ 목표 - Spring Boot 프로젝트에 Lombok을 추가한다. ■ 사용 툴 - Intellij Ultimate 버전. - SpringBoot는 Gradle 사용. 1. build.gradle 파일에 의존성 추가. build.gradle 파일 dependencies에 아래 의존성을 추가한다. imp

devgoat.tistory.com

생성자 주입은 전부 불변이고, 생성자에 final 키워드를 사용하고, 생성자를 만들고, 주입받는 코드를 만들어야한다.
@Component
public class OrderServiceImpl implements OrderService{

    private final MemberRepository memberRepository ;
    private final DiscountPolicy discountPolicy;
    @Autowired
    public OrderServiceImpl(MemberRepository memberRepository,DiscountPolicy discountPolicy) {
        this.memberRepository = memberRepository;
        this.discountPolicy = discountPolicy;
    }
}​

 

해당 코드는 최적화 할 수 있다.
https://onepunchprogram.tistory.com/54
스프링 빈에서 생성자가 한개이면 @Autowired 생략해도 자동 주입 된다.
@Component
public class OrderServiceImpl implements OrderService{

    private final MemberRepository memberRepository ;
    private final DiscountPolicy discountPolicy;
    public OrderServiceImpl(MemberRepository memberRepository,DiscountPolicy discountPolicy) {
        this.memberRepository = memberRepository;
        this.discountPolicy = discountPolicy;
    }
}​​


롬복 적용
- 롬복 라이브러리가 제공하는 @RequiredArgsConstructor 기능을 사용하면 final이 붙은 필드를 모아서 생성자를 자동으로 만들어준다.
- 매우 간결하다.

최종코드

@Component
@RequiredArgsConstructor //final이 붙은 필드값에 대해 생성자를 만들어줌
public class OrderServiceImpl implements OrderService{

    private final MemberRepository memberRepository ;
    private final DiscountPolicy discountPolicy;
}​
이 최종 코드와 이전의 코드는 완전히 동일하다. 롬복이 자바 애노테이션 프로세서라는 기능을 이용해서 컴파일 시점에 생성자 코드를 자동으로 생성해준다. 

정리
최근에는 생성자를 1개 두고 , @Autowired를 생략하는 방법을 주로 사용한다. 여기에 Lombok라이브러리의 @RequiredArgsConstructor 함께 사용하면 기능은 다 제공하면서, 코드는 깔끔하게 사용할 수 있다. 

 

728x90