Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

개발자되기 프로젝트

의존관계 주입, lombok 본문

인프런/[인프런] Spring 핵심원리 이해

의존관계 주입, lombok

Seung__ 2021. 7. 29. 23:27
  • lombok 개편함
  • 대부분 의존관계는 불변이다.
  • 따라서 생성자에 final 키워드 사용함
  • 근데 생성자도 만들어야 하고,,, 대입하는 코드도 만들어야하고.. 여간 귀찮은게 아니다.
  • 해줘!

 

 

1. build.gradle


- dependencies 추가

    implementation 'org.projectlombok:lombok:1.18.18'
    implementation 'org.projectlombok:lombok:1.18.18'
    compileOnly 'org.projectlombok:lombok'
    annotationProcessor 'org.projectlombok:lombok'
    testCompileOnly 'org.projectlombok:lombok'
    testAnnotationProcessor 'org.projectlombok:lombok'

 

 

2. 사용 예시


 

Lombok

@EqualsAndHashCode 특별히 JPA에서 @EqualsAndHashCord를 사용할 일 많이 없음. 다만 @Data에서 구현하고 있는 내용이고 자바에서 객체의 동등성을 비교하기 위해서 equals method와 hashCode method를 overridin..

bsh-developer.tistory.com

@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
public class HelloLombok {
    
    private String name;
    private int age;

    public static void main(String[] args) {
        HelloLombok helloLombok = new HelloLombok();
        helloLombok.setAge(1);
        helloLombok.setName(":dddd");
        int age = helloLombok.getAge();
        String name = helloLombok.getName();
    }
}

 

 

3. Lombok 적용


 

  • RequiredArgsConstructor : final인 필드를 받는 생성자를 만듦.
  • 코드가 굉장히 깔끔해진다...
    @Component
    @RequiredArgsConstructor //final 붙은 필드를 받는 생성자를 만듦
    public class OrderServiceImpl implements OrderService{
    
        private  final MemberRepository memberRepository;
    
        private  final DiscountPolicy discountPolicy; //이렇게하면 인터페이스에만 의존함.
        
        @Override
        public Order createOrder(Long memberId, String itemName, int itemPrice) {
    
            Member member = memberRepository.findById(memberId);
    
            //OrderService : 할인금액 나는 몰라, discountPolicy 니가 내놔
            //discountPolicy : 네
            int discountPrice = discountPolicy.discount(member, itemPrice);
    
            return new Order(memberId, itemName, itemPrice, discountPrice);
    
    
        }
    
    }
  • 의존관계 추가할 때 굉장히 편리함! 생성자 만들어줘서 개편리..
  • 근데 @Autowired는....?
  • 생성자가 딱 1개만 있으면 @Autowired 생략이 가능해!
  • 그러니 생성자를 딱 하나만 두고 Lombok의 @RequiredArgsConstructor를 같이 사용하자.
  • 기능은 다 제공하고 코드는 깔 ~ 끔해진다.

 

4. GitHub : 210729 lombok


 

 

GitHub - bsh6463/SpringCoreFunction

Contribute to bsh6463/SpringCoreFunction development by creating an account on GitHub.

github.com

 

Comments