[Spring] @RequiredArgsConstructor이란?
2024. 3. 7. 11:15ㆍBackEnd/Spring & Spring Boot
@RequiredArgsConstructor이란?
@RequiredArgsConstructor이란 Lombok으로 스프링에서 DI(의존성 주입)의 방법 중에 생성자 주입을 임의의 코드없이 자동으로 설정해주는 어노테이션이다.
@RequiredArgsConstructor는 초기화 되지 않은 final 필드나, @NonNull이 붙은 필드에 대해 생성자를 생성해준다.
또한 새로운 필드를 추가할 때 다시 생성자를 만들어서 관리해야 하는 번거로움을 없애준다. (@Autowired를 사용하지 않고 의존성 주입)
예시
1. @RequiredArgsConstructor를 사용x(생성자 주입 코드를 모두 작성)
@RestController
@RequestMapping("/example")
public class RequiredArgsConstructorEx {
private final FirstService firstService;
private final SecondService secondService;
private final ThirdService thirdService;
@Autowired
public RequiredArgsConstructorEx(FirstService firstService, SecondService secondService, ThirdService thirdService) {
this.firstRepository = firstRepository;
this.secondRepository = secondRepository;
this.thirdRepository = thirdRepository;
}
}
보통 DI(의존성 주입) 방식에는 필드 주입(Field Injection), 수정자 주입(Setter, Injection), 생성자 주입(Constructor Injection)의 3가지 방법이 있는데 이중에서 가장 권장하는 의존성 주입은 생성자 주입 방식이다.
하지만 생성자 주입의 단점은 위의 코드처럼 생성자를 만들기 번거롭다는 것이다.
이를 보완하기 위해 Lombok을 사용하여 간단한 방법으로 생성자 주입 방식의 코딩을 할 수 있다.
2. @RequiredArgsConstructor를 사용
@RestController
@RequiredArgsConstructor
@RequestMapping("/example")
public class RequiredArgsConstructorEx {
private final FirstService firstService;
private final SecondService secondService;
private final ThirdService thirdService;
}
위의 코드처럼 해당 필드로 구성된 생성자를 @RequiredArgsConstructor가 자동으로 생성자 주입에 대한 코드를 생성해준다.
'BackEnd > Spring & Spring Boot' 카테고리의 다른 글
[Spring] IntelliJ Live template (0) | 2024.04.18 |
---|---|
[Spring Boot] WebSecurityConfigurerAdpater 지원 안함 (0) | 2024.03.18 |
[JUnit5 오류] mustache 한글만 출력 오류 인코딩 오류 (0) | 2024.03.15 |
[Spring] 어노테이션(Annotation)이란? (0) | 2024.02.27 |
entity에서 id값을 Long으로 지정하는 이유 (0) | 2024.02.20 |