반응형
롬복과 최신 트렌드
막상 개발을 해보면, 대부분이 다 불변이다. 따라서 생성자에 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;
}
}
롬복 라이브러리를 적용하면 된다.
롬복 라이브러리가 제공하는 @RequireArgsConstructor 기능을 사용하면 final 이 붙은 필드를 모아서 생성자를 자동으로 만들어준다.
즉, 생성자를 자동으로 만들어준다.(final이 붙은 필드들을)
start.io.spring으로 프로젝트 생성시 add dependecy로 롬복을 선택하면 자동 적용된다.
직접 사용하는 방법은...
build.gradle에 해당 코드 추가
//lombok 설정 추가 시작
configurations {
compileOnly {
extendsFrom annotationProcessor
}
}
//lombok 설정 추가 끝
// 그리고 dependency안에 추가
//lombok 라이브러리 추가 시작
compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'
testCompileOnly 'org.projectlombok:lombok'
testAnnotationProcessor 'org.projectlombok:lombok'
//lombok 라이브러리 추가 끝
그리고 @RequiredArgsConstructor어노테이션을 붙이면 끝!
@Component
@RequiredArgsConstructor
public class OrderServiceImpl implements OrderService {
private final MemberRepository memberRepository;
private final DiscountPolicy discountPolicy;
}
쉽쥬?
롬복이 자바의 어노테이션 프로세서라는 기능을 이용하여 컴파일 시점에 생성자 코드를 자동으로 생성해준다. 실제 class를 열어보면 생성자가 추가된걸 알 수 있다.
package hello.core;
import lombok.Getter;
import lombok.Setter;
//롬곡 라이브러리가 자동으로 setter, getter를 만들어준다.
@Setter
@Getter
public class HelloLombok {
private String name;
private int age;
public static void main(String[] args) {
HelloLombok helloLombok = new HelloLombok();
helloLombok.setName("asdfasdf");
String name = helloLombok.getName();
System.out.println("name = " + name);
}
}
728x90
반응형
'공부 > Spring_2-스프링 핵심 원리 이해1' 카테고리의 다른 글
스프링 핵심 원리 이해1(종합) (0) | 2022.04.08 |
---|---|
스프링 핵심 원리 이해1_13 - 조회 빈이 2개 이상, @Primary, @Qualfier (0) | 2022.04.07 |
스프링 핵심 원리 이해1_10 - 의존관계 자동주입 (0) | 2022.04.07 |
스프링 핵심 원리 이해1_8 - 컴포넌트 스캔 (0) | 2022.04.07 |
스프링 핵심 원리 이해1_7 -@Configuration과 싱글톤 (0) | 2022.04.07 |