TIL

226일차(모험 135일차) - 롬복과 최신 트렌드

haedal-uni 2022. 4. 29. 21:43
728x90

[add] 롬복과 최신 트렌드 [#32] #35

* 생성자가 딱 1개만 있으면 @Autowired를 생략할 수 있다.

더보기
@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;
    }
}

⬇️

@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;
    }
}

 

 

 

 

 

build.gradle에 lombok 설정 추가

configurations {
    compileOnly {
        extendsFrom annotationProcessor
    }
}

 

 

 

의존관계도 넣어준다. (dependencies)

 

//lombok 라이브러리 추가 시작
    compileOnly 'org.projectlombok:lombok'
    annotationProcessor 'org.projectlombok:lombok'
    testCompileOnly 'org.projectlombok:lombok'
    testAnnotationProcessor 'org.projectlombok:lombok'
 //lombok 라이브러리 추가 끝

 

 

 

 

+) 추가 세팅하기(settings > plugin > lombok)

 

 

 

 

 

enable annotation processing 꼭 켜둔다.

 

 

 

→ 이제 인텔리제이에서 롬복을 사용할 수 있게 되었다.

 


 

롬복 적용해보기

@RequiredArgsConstructor

 

필수 값인 final이 붙은 것을 가지고 생성자를 만들어준다. (아래와 같이)

final 이 붙은 2개를 파라미터로 받는 생성자를 만들어준다.

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

 

 

 

기존 코드

@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;
    }
}

@Component
@RequiredArgsConstructor
public class OrderServiceImpl implements OrderService{

    private final MemberRepository memberRepository;
    private final DiscountPolicy discountPolicy; 

}

 

 

 

 

 

* ctrl + F12

생성자가 만들어진 것을 볼 수 있다.

 

 

 

➡️ lombok 라이브러리가 제공하는 @RequiredArgsConstructor 기능을 사용하면

final이 붙은 필드를 모아서 생성자를 자동으로 만들어준다.

 

728x90