의존성 주입에 왜 롬복을 알려줄까?
왜냐하면, 의존성 주입 4가지 방법 중 생성자 주입방법을 가장 권장하기때문이다.
생성자 주입은 생성자를 매번 만들어줘야하는데, 이 귀찮은 작업을 롬복이 도와준다.
1. 롬복이란?
롬복(Lombok)은 Java 언어를 위한 라이브러리로 특정한 상황에서 반복적으로 작성되는 코드 조각을 줄여준다.
개발자의 생산성을 향상시키는 데 도움이 된다.
실무에서 아주 많이 쓰이는 라이브러리!
2. 롬복 라이브러리 설정하는 법 (build.gradle)
✔️build.gradle에 Lombok 라이브러리 코드를 추가하고 재빌드한다.
//lombok 설정 추가 시작
configurations {
compileOnly {
extendsFrom annotationProcessor
}
}
//lombok 설정 추가 끝
dependencies {
implementation 'org.springframework.boot:spring-boot-starter'
//lombok 라이브러리 추가 시작
compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'
testCompileOnly 'org.projectlombok:lombok'
testAnnotationProcessor 'org.projectlombok:lombok'
//lombok 라이브러리 추가 끝
testImplementation('org.springframework.boot:spring-boot-starter-test') {
exclude group: 'org.junit.vintage', module: 'junit-vintage-engine'
}
}
✔️Settings -> plugins -> lombok 다운로드 받는다.
✔️Settings -> Annotation Processors -> Enable annotation processing 체크
3. 롬복 적용 전 코드 vs 적용 후 코드
✅롬복 적용 전 코드 (생성자)
@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;
}
}
- 생성자를 직접 만들어줬다.
- 하지만, 생성자 코드는 형태가 반복된다. 개발자는 반복을 싫어한다!
✅롬복 적용 전 코드 (getter, setter, toString)
public class HelloLombok {
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "HelloLombok{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
public static void main(String[] args) {
HelloLombok helloLombok = new HelloLombok();
helloLombok.setName("asdfas");
System.out.println("helloLombok = " + helloLombok);
}
}
- name과 age 변수에 대한 getter, setter를 만들어줬다.
- getter, setter의 형태도 어떤 변수든 결국 반복적인 형태다.
✅롬복 적용 후 코드 (생성자)
@Component
@RequiredArgsConstructor
public class OrderServiceImpl implements OrderService {
private final MemberRepository memberRepository;
private final DiscountPolicy discountPolicy;
}
@RequiredArgsConstructor 를 사용하면 final이 붙은 필드를 모아 생성자를 만들어준다.
✅롬복 적용 후 코드 (getter, setter, toString)
@Getter
@Setter
@ToString
public class HelloLombok {
private String name;
private int age;
public static void main(String[] args) {
HelloLombok helloLombok = new HelloLombok();
helloLombok.setName("asdfas");
System.out.println("helloLombok = " + helloLombok);
}
}
롬복이 제공해주는 기능인 @Getter, @Setter, @ToString를 사용하면 코드가 확 간결해진다.
'인프런 김영한 강의 정리 > 스프링 핵심원리 기본편' 카테고리의 다른 글
스프링 핵심원리 기본편 - 의존관계 자동 주입(5)|조회한 빈이 모두 필요할 때, List, Map (0) | 2024.05.07 |
---|---|
스프링 핵심 원리 기본편 - 의존관계 자동 주입(4)|조회하는 빈이 2개 이상,해결법, 애노테이션 직접 만들기 (0) | 2024.05.06 |
스프링 핵심 원리 기본편 - 의존관계 자동 주입(2)|옵션처리 (0) | 2024.05.04 |
스프링 핵심원리 기본편 - 의존관계 자동 주입(1)|다양한 의존관계 주입방법 (0) | 2024.05.02 |
스프링 핵심원리 기본편 - 컴포넌트 스캔 (0) | 2024.05.01 |