💻본 포스팅은 '스프링 핵심 원리 - 기본편 김영한'님의 강의를 듣고 작성되었습니다.
[롬복이란?]
자바에서 반복되는 메소드들을 줄여주기 위해서 사용되는 코드 다이어트를 위한 라이브러리로 반복되는 코드들의 대표적인 예시로는 아래와 같은 메소드들이 있다.
- Getter
- Setter
- ToString
[롬복 설치법]
plugins {
id 'org.springframework.boot' version '2.6.2'
id 'io.spring.dependency-management' version '1.0.11.RELEASE'
id 'java'
}
group = 'hello'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '11'
//lombok 설정 추가 시작
configurations {
compileOnly {
extendsFrom annotationProcessor
}
}
//lombok 설정 추가 끝
repositories {
mavenCentral()
}
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'
}
test {
useJUnitPlatform()
}
- build.gradle에 Lombok관련된 것들을 위와 같이 작성해준다.
- 위의 티스토리에서 제공하는 방법을 똑같이 진행해서 플러그인을 다운 받고 어노테이션 활성화 설정을 켜주어야 합니다!
[왜 롬복을 사용할까??]
[final 키워드가 붙은 필드를 보고 생성자를 대신 생성&관리해준다.]
package hello.core.order;
import hello.core.discount.DiscountPolicy;
import hello.core.member.Member;
import hello.core.member.MemberRepository;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@Component
// 생성자를 만들어 놓지 않아도 final이 붙은 필드를 생성자로 자동으로 만들어주는 어노테이션!
@RequiredArgsConstructor
public class OrderServiceImpl implements OrderService {
private final MemberRepository memberRepository;
private final DiscountPolicy discountPolicy;
@Override
public Order creatOrder(Long memberId, String itemName, int itemPrice) {
Member member = memberRepository.findById(memberId);
int discountPrice = discountPolicy.discount(member, itemPrice);
return new Order(memberId, itemName, itemPrice, discountPrice);
}
//테스트 용도
public MemberRepository getMemberRepository(){
return memberRepository;
}
}
@RequiredArgsConstructor
- 기존 코드는 생성자를 통한 의존관계 주입을 진행했지만 롬복에서 제공하는 위의 어노테이션이 이를 대신해준다.
- 개발자가 생성자를 직접 만들지 않아도 어노테이션이 final 키워드가 붙은 필드를 보고 그 필드(속성)를 이용해서 생성자를 대신 생성해주고 관리해준다.
- 이는 필드 변경이 있어도 개발자가 일일히 수정해야 하는 번거로움을 덜어주고 생성자를 작성하기 위해 코드를 손수 직접 다 작성해야하는 번거로움을 덜어준다.
[코드 다이어트를 돕는다.]
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("asss");
String name = helloLombok.getName();
System.out.println("name = " + name);
}
}
@Getter
@Setter
@ToString
- Getter / Setter / ToString과 같이 반복해서 사용해야 하는 코드들을 줄여준다.
- 위의 어노테이션들이 Get/Set/ToString과 같이 개발자들이 많이 사용하는 코드들을 직접 관리해주어서 굳이 작성해서 사용하지 않아도 된다.
- 코드가 매우 간결해지고 깔끔해진다.
'Back-End > Spring' 카테고리의 다른 글
[Spring][스프링 기본편] - 25. 빈 생명주기 콜백 시작 (0) | 2022.02.03 |
---|---|
[Spring][스프링 기본편] - 24. 조회 빈이 2개 이상일 때와 해결법(@ Autowired, @Qualifier, @Primary) (0) | 2022.01.31 |
[Spring][스프링 기본편] - 22. 생성자 주입을 사용해야 하는 이유(의존관계 설정) (0) | 2022.01.28 |
[Spring][스프링 기본편] - 21. 옵션 처리(의존관계 주입) (0) | 2022.01.28 |
[Spring][스프링 기본편] - 20. 의존관계 주입 (0) | 2022.01.28 |