반응형

롬복과 최신 트렌드

막상 개발을 해보면, 대부분이 다 불변이다. 따라서 생성자에 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
반응형
블로그 이미지

아상관없어

,