대부분이 다 불변이라서 필드에 final 키워드를 사용하고, 생성자를 만들어야 하고, 주입 받은 값을 대입하는 코드도 만들어야 한다.
필드 주입처럼 편리하게 사용하도록 롬복 라이브러리를 적용하여 기본 코드를 최적화 한다.
기본 코드)
- src/main/java/hello/core/order/OrderServiceImpl.java
@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;
}
}
롬복 라이브러리가 제공하는 @RequiredArgsConstructor 기능 사용시, final이 붙은 필드를 모아서 생성자를 자동으로 만들어준다.
# @RequiredArgsConstructor : final이 붙은 필드를 모아서 생성자를 자동으로 생성
최종 결과 코드)
- src/main/java/hello/core/order/OrderServiceImpl.java
@Component
@RequiredArgsConstructor
public class OrderServiceImpl implements OrderService {
private final MemberRepository memberRepository;
private final DiscountPolicy discountPolicy;
}
롬복이 자바의 어노테이션 프로세서 기능을 사용해 컴파일 시점에 생성자 코드를 자동으로 생성해준다.
실제 .class 파일을 열어보면 다음 코드가 추가되어 있다.
public OrderServiceImpl(MemberRepository memberRepository, DiscountPolicy discountPolicy) {
this.memberRepository = memberRepository;
this.discountPolicy = discountPolicy;
}
정리)
최근에는 생성자를 1개 두고, @Autowired 를 생략하는 방법을 주로 사용한다.
여기에 Lombok 라이브러리의 @RequiredArgsConstructor 와 함께 사용하면 코드가 깔끔해진다.
1. 롬복 라이브러리 적용 방법
build.gradle 에 라이브러리 및 환경 추가
- 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'
...
}
...
1) Preferences > plugin > Lombok 검색 설치 실행 (재시작)
윈도우 : 설정 > 플러그인 > Lombok 검색 설치 실행 (재시작)
2) Preferences > Annotation Processors 검색 > Enable annotation processing 체크 (재시작)
윈도우 : 설정 > 빌드, 실행, 배포 > 컴파일러 > 어노테이션 프로세서 > 어노테이션 처리 활성화 체크 > 적용 > 확인
3) 임의의 테스트 클래스를 만들고 @Getter, @Setter 확인
- src/main/java/hello/core/HelloLombok.java
package hello.core;
import lombok.Getter;
import lombok.Setter;
import lombok.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("Lombok");
String name = helloLombok.getName();
System.out.println("name = " + name);
System.out.println("helloLombok = " + helloLombok);
}
}
스프링 핵심 원리 - 기본편| 김영한 - 인프런 강의
현재 평점 5.0점 수강생 49,567명인 강의를 만나보세요. 스프링 입문자가 예제를 만들어가면서 스프링의 핵심 원리를 이해하고, 스프링 기본기를 확실히 다질 수 있습니다. 스프링 기본 기능, 스프
www.inflearn.com
'강의 실습 > 스프링 핵심 원리 - 기본편' 카테고리의 다른 글
| @Autowired 필드 명, @Qualifier, @Primary (0) | 2026.04.28 |
|---|---|
| 조회 빈이 2개 이상 - 문제 (0) | 2026.04.27 |
| 생성자 주입을 선택해라! (0) | 2026.04.26 |
| 옵션 처리 (0) | 2026.04.25 |
| 다양한 의존관계 주입 방법 (0) | 2026.04.24 |
댓글