반응형
본 내용은 온라인 강의 사이트 인프런의 김영한 님의 강의 내용이 포함되어 있습니다.
'스프링 핵심 원리 - 기본편'
롬복(Lombok)
롬복은 어노테이션 기반으로 코드를 자동 완성할 수 있는 기능을 제공하는 라이브러리이다.
롬복은 어노테이션을 통해 생성자, Getter, Setter, toString, … 등의 반복적인 메서드 작성을 줄일 수 있다.
롬복의 사용 예시
@Getter
@Setter
@ToString
public class LombokTest {
private String name;
private int age;
public static void main(String[] args) {
LombokTest lombokTest = new LombokTest();
// getter 사용
lombokTest.setName("홍길동");
lombokTest.setAge(20);
// setter 사용
String name = lombokTest.getName();
int age = lombokTest.getAge();
// toString 사용
System.out.println("lombokTest = " + lombokTest);
System.out.println("name = " + name + ", age = " + age);
}
}
// 출력
name = 홍길동, age = 20
lombokTest = lombokTest(name=홍길동, age=20)
롬복 라이브러리 적용 방법
build.gradle에 라이브러리 및 환경을 추가한 뒤, Gradle Project를 Reload 한다.
...
sourceCompatibility = '11'
// Lombok 설정
configurations {
compileOnly {
extendsFrom annotationProcessor //annotationProcessor 사용
}
}
...
dependencies {
...
// 라이브러리 추가
compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'
testCompileOnly 'org.projectlombok:lombok'
testAnnotationProcessor 'org.projectlombok:lombok'
...
}
...
이후 IntelliJ IDE에서 다음과 같이 설정한다.
1. File → Settings → plugins에서 Lombok 설치 후 재시작
2. File → Annotatin Processors 검색 → Enable annotation processing 체크 및 확인 후 재시작
롬복을 활용한 의존성 주입
스프링은 생성자 주입을 권장하고 있으며, 대부분 생성자 주입을 사용한다.
또한, 프로젝트에서 의존성 주입은 대부분이 불변이기 때문에 필드에 final 키워드를 사용하게 된다.
이는 다음과 같이 생성자도 만들어야 하며, 의존성 받은 값을 대입해야 한다.
@Service
public class MemberServiceImpl implements MemberService {
private final MemberRepository memberRepository;
// @Autowired 생성자가 1개일 경우 생략 가능
public MemberServiceImpl(MemberRepository memberRepository) {
this.memberRepository = memberRepository;
}
}
위 코드에서 롬복 라이브러리에서 제공하는 @RequiredArgsConstructor 기능을 사용하여 코드를 획기적으로 줄일 수 있다.
@Service
@RequiredArgsConstructor
public class MemberServiceImpl implements MemberService {
private final MemberRepository memberRepository;
}
이 코드는 이전에 작성한 코드와 동일한 코드가 된다.
이처럼 롬복이 자바의 어노테이션 프로세서라는 기능을 활용하여 컴파일 시점에 생성자 코드를 자동으로 생성해준다.
또한, 필드를 추가하는 것으로 새로운 의존관계 주입을 할 수 있다.
반응형
'프레임워크(Framework) > Spring' 카테고리의 다른 글
[Spring] AOP 용어 및 개념 정리 (0) | 2022.11.08 |
---|---|
[Spring] 스프링 조회한 빈(Bean)이 2개 이상인 경우 문제 해결 방법 (1) | 2022.11.07 |
[Spring] 스프링 컴포넌트 스캔(Component Scan) 정리 (0) | 2022.11.05 |
[Spring] 스프링 싱글톤 컨테이너 (웹 애플리케이션과 싱글톤) (0) | 2022.11.04 |
[Spring] 스프링 의존성 주입(DI : Dependency Injection) 4가지 방법 (의존 관계 자동 주입) (1) | 2022.11.03 |