생성자 코드를 최적화하기 위해서 lombok 라이브러리를 사용
lombok 라이브러리 추가 & 플러그인 설치 후 다음과 같이 변경할 수 있었다.
- 이전 코드
: 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;
}
...
}
- 이후 코드 : @RequiredArgsConstructor사용
: 생성자 작성이 불필요!
: final 붙은 필드를 모아서 생성자를 자동으로 만들어준다.
@Component
@RequiredArgsConstructor
public class OrderServiceImpl implements OrderService{
private final MemberRepository memberRepository;
private final DiscountPolicy discountPolicy;
...
}
확인해보면 (ctrl + F12) 생성자가 자동으로 포함되어 있는 것을 확인 가능하다.
요약
∨ 생성자 코드를 깔끔하게 쓰기
: 생성자 딱 하나 두고 @Autowired 생략하기
: Lombok 라이브러리의 @RequiredArgsConstructor 이용하기
그럼 의존관계를 막 추가해주기도 편하다.
그냥 private final Object object 아무거나 써주면, 생성자는 lombok에 의해 알아서 처리되니까..
(참고)
lombok의 @Getter, @Setter 어노테이션을 이용하면 getter, setter도 직접 작성하지 않고 간결하게 이용 가능하다. 필드를 보고 자동으로 만들어준다. 그냥 setXXX(), getXXX() 바로 이용하면 된다.
이밖에도 지원하는 기능이 많다. 나중에 필요하면 찾아보자.
반응형
'web +a' 카테고리의 다른 글
annotation 직접 만들기 (@Qualifier 관련) (0) | 2022.07.13 |
---|---|
@Autowired 조회 빈이 2개 이상일 때 | 문제점 해결 & 해당 타입 빈 모두 보기 (0) | 2022.07.13 |
생성자 주입 권장 (0) | 2022.07.13 |
자동주입 - 옵션 처리 (0) | 2022.07.11 |
컴포넌트 스캔 (0) | 2022.07.08 |