막상 개발을 해보면, 대부분이 다 불변이고, 그래서 다음과 같이 생성자에 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;
}
}
생성자가 딱 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 같은 메서드를 임의로 만들어주는 라이브러리입니다.
→ 롬복 자세히