[스프링 핵심원리 기본편] 7.4 롬복과 최신트렌드

코린이서현이·2023년 11월 12일
0

🥹들어가면서🥹

내 빅데이터... 어떻게 해... 뭘 어떻게 해... 그냥 해야지...
근데 너무 졸리단 말이야?!

내일 빅데이터 수업들어가기전에 무조건 빅데이터 수업 다 듣고, 
내일은 강의가 아니라 학과 공부를 하자... 그러면 또 강의가 밀리는데...
어쩌면 이게 불가능한거 아닐까..? ~~ ;;;;

하지만 해냈죠? 😎 난 멋져 

의존관계 주입 방법

1) 생성자 주입
2) setter 주입
3) 필드주입
4) 메서드 주입
대부분 생성자 주입 private + final 키워드 사용을 하게 된다. 
그런데 이게 귀찮기 때문에 이를 보완하는 방법을 고민하게 되었다.
➡️ 최적화

📌 롬복과 최신 트렌드

📒 롬복

  • getter, setter 메소드를 자동으로 만들어준다.
  • 생성자도 자동으로 만들어 준다고~?
  • @Tostring 도 제공한다~

✔️ 공식 문서를 읽는 습관을 들이자!

  • @NoArgsConstructor
매개변수 없이 생성자를 생성합니다.
  • @RequiredArgsConstructor
특별한 처리가 필요한 각 필드에 대해 1개의 매개변수가 있는 생성자를 생성한다.
<생성 필드>
- 초기화되지 않은 모든 필드는 매개변수를 가지며 선언된 위치에서 초기화되지 않은 것으로 
final표시된 모든 필드도 가져온다.
- @NonNull로 표시된 필드의 경우 @NonNull명시적 Null 검사도 생성됩니다. 
포함 NullPointerException으로 표시된 필드에 대한 매개변수가 있는 경우 생성자는 발생시킵니다.
  • @AllArgsConstructor
클래스의 각 필드에 대해 1개의 매개변수가 있는 생성자를 생성합니다. 
표시가 있는 필드는 @NonNull해당 매개변수에 대해 null 검사를 수행합니다.

공식문서

⚠️ 동일한 생성자 오류

  • 명시적인 생성자와 동시에 사용할 수 있다. 다만, 동일하면 컴파일 오류가 발생한다.
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
public class HelloLombok {
  private String name;
  private int age;

  public HelloLombok(String name, int age) {
    this.name = name;
    this.age = age;
  }

  public static void main(String[] args) {
    HelloLombok helloLombok = new HelloLombok();
    helloLombok.setAge(23);

    int age1 = helloLombok.getAge();
    System.out.println("age1 = " + age1);
  }
}

➡️ 오류 메시지 출력

java: constructor HelloLombok(java.lang.String,int) 
is already defined in class hello.core.HelloLombok

📒 롬복 적용

✔️ @RequiredArgsConstructor 을 적용하자,

  • 특별한 처리가 필요한 각 필드에 대해 1개의 매개변수가 있는 생성자를 생성한다.
  • 예를 들어, 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;
  }
}

😮 롬복 적용 @RequiredArgsConstructor

  • 훨씬 좋잖슴~
@Component
@RequiredArgsConstructor //final이 붙은 "필수값"에 대한 생성자를 만들어준다.
public class OrderServiceImpl implements  OrderService{

  private final MemberRepository memberRepository;
  private final DiscountPolicy discountPolicy;

}

🙆 롬복의 애노테이션을 활용하자

최근에는 생성자를 딱 1개 두고, @Autowired 를 생략하는 방법을 주로 사용한다.
(생성자가 하나만 있으면 @Autowired생략가능)
➕ 더해서 ,여기에 Lombok 라이브러리의 @RequiredArgsConstructor 함께 사용하면 
기능은 다 제공하면서, 코드는 깔끔하게 사용할 수 있다.

🤔마무리하면서🤔

제가 충격적인 소식을...
"15일 의료계에 따르면 지난 2007년 세계보건기구(WHO) 산하 국제암연구소(IARC)는 
야간 교대 근무를 2A군(발암추정물질)으로 지정하며 위험성을 경고했다...." 출처 : 동아일보 2023-07-15

조졌다! 매일 밤샘하는데 😨😱😨😱
진짜 이제 규칙적인 생활만이 살길이다... 오래 살고 싶다...
profile
24년도까지 프로젝트 두개를 마치고 25년에는 개발 팀장을 할 수 있는 실력이 되자!

0개의 댓글