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