롬복과 최신 트랜드

막상 개발을 해보면, 대부분이 다 불변이고, 그래서 다음과 같이 생성자에 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;
    }
}

@Autowired 생략

생성자가 딱 1개만 있으면 @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;
    }
}

롬복 라이브러리 적용

여기에다가 롬복이라는 라이브러리를 적용해보겠습니다.

롬복이란 자바의 getter, setter 같은 메서드를 임의로 만들어주는 라이브러리입니다.

롬복 자세히