🧐강의🧐
https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%ED%95%B5%EC%8B%AC-%EC%9B%90%EB%A6%AC-%EA%B8%B0%EB%B3%B8%ED%8E%B8/dashboard
💡IntelliJ 설정 변경하기
· build.gradle 에 Lombok 추가 & gradle refresh
...
configurations {
compileOnly {
extendsFrom annotationProcessor
}
}
dependencies {
...
compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'
testCompileOnly 'org.projectlombok:lombok'
testAnnotationProcessor 'org.projectlombok:lombok'
}
...
· Lombok 플러그인 설치
· Annotation Processors 활성화
TEST
@Getter
@Setter
@ToString
public class HelloLombok {
private String name;
private int age;
public static void main(String[] args) {
HelloLombok helloLombok = new HelloLombok();
// Setter
helloLombok.setName("alsrud");
// Getter
String name = helloLombok.getName();
System.out.println("name = " + name);
// ToString
System.out.println("helloLombok = " + helloLombok);
}
}
💡Lombok 으로 코드 최적화하기 (OrderServiceImpl)
· 기존 코드
...
@Component
public class OrderServiceImpl implements OrderService{
private final MemberRepository memberRepository;
private final DiscountPolicy discountPolicy;
@Autowired // 생성자 1개일 땐 생략 가능
public OrderServiceImpl(MemberRepository memberRepository, DiscountPolicy discountPolicy) {
this.memberRepository = memberRepository;
this.discountPolicy = discountPolicy;
}
...
}
· 변경된 코드
☑️ Lombok 라이브러리가 제공하는 @RequiredArgsConstructor 기능이 final 이 붙은 필드들의 생성자 자동 생성
@Component
@RequiredArgsConstructor
public class OrderServiceImpl implements OrderService{
private final MemberRepository memberRepository;
private final DiscountPolicy discountPolicy;
// lombok 의 @RequiredArgsConstructor 가 자동으로 만들어줌
// @Autowired
// public OrderServiceImpl(MemberRepository memberRepository, DiscountPolicy discountPolicy) {
// this.memberRepository = memberRepository;
// this.discountPolicy = discountPolicy;
// }
...
}
최근에는 생성자를 1개만 두고, @Autowired 를 생략하는 방법을 주로 사용한다.
Lombok 라이브러리의 @RequiredArgsConstructor 을 함께 사용 시, 기능은 모두 제공하면서 깔끔한 코드를 사용할 수 있다.
'Spring > 스프링 핵심 원리 - 기본편' 카테고리의 다른 글
[의존 관계 자동 주입] @Qualifer 타입 체크 문제 해결하기 - 애노테이션 직접 생성 (0) | 2023.12.25 |
---|---|
[의존 관계 자동 주입] 조회할 빈이 2개 이상일 때 (4) | 2023.12.22 |
[의존 관계 자동 주입] 자동 주입 대상 옵션으로 처리하기 (0) | 2023.12.19 |
[의존 관계 자동 주입] 생성자 주입 선택하기 (2) | 2023.12.18 |
[컴포넌트 스캔] 필터 - includeFilters, excludeFilters (2) | 2023.12.07 |