@RequiredArgsConstructor 를 사용할때 주의점
의존성주입의 종류로는 Constructor(생성자),Setter,Field 타입이 있습니다.
- Constructor(생성자)를 사용한 의존성 주입
public class Example{
private final FirstService firstService;
private final SecondService secondService;
@Autowired
public Example(FirstService firstService, SecondService secondService) {
this.firstService= firstService;
this.secondService= secondService;
}
}
- Setter를 사용한 의존성 주입
public class Example{
private final FirstService firstService;
private final SecondService secondService;
@Autowired
public void setFirstService(FirstService firstService){
this.firstService = firstService;
}
@Autowired
public void setSecondService(SecondService secondService){
this.secondService = secondService;
}
}
3.Field를 사용한 의존성 주입
public class Example{
@Autowired
private FirstService firstService;
@Autowired
private SecondServie secondService;
}
보통 DI(의존성 주입)을 방식에는 필드 주입(Field Injection), 수정자 주입(Setter Injection), 생성자 주입(Constructor Injection)의 3가지의 방법이 있는데 이중에서 가장 권장하는 의존성 주입은 생성자 주입 방식입니다.
@RequiredArgsConstructor 어노테이션을 사용한 생성자 주입 방법
생성자주입의 단점은 위의 Constructor(생성자) 코드처럼 생성자를 만들기 번거롭다는 것이다. 하지만 이를 보완하기위해 lombok을 사용하여 간단한 방법으로 생성자 주입 방식의 코딩을 할 수 있다.
스프링부트를 사용하여 개발할때 우리는 의존성 주입을 위해 @RequiredArgsConstructor를 사용합니다. 이때 굉장히 반드시 알고 가야될 개념이 있습니다.
@RequiredArgsConstructor
- final이 붙거나 @Notnull이 붙은 필드의 생성자를 자동 생성해주는 롬복 어노테이션
- final 키워드를 사용한 인스턴스들만 Bean객체로 등록을 한다.
- final키워드를 사용하지 않고 사용하면 NullPointerException이 발생한다.
'Programming > Spring' 카테고리의 다른 글
Thymeleaf yml설정 (0) | 2023.03.19 |
---|---|
[JAVA] Spring initializr를 사용하여 Spring Project 시작하기 (0) | 2023.03.19 |