티스토리 뷰
@RequiredArgsConstructor이란?
Lombok에서 제공해 주는 어노테이션으로 final이 붙은 필드와 @NonNull이 붙은 필드에 자동으로 생성자를 생성해 준다.
어떻게 @RequiredArgsConstructor만으로 객체가 주입이 되는지?
@RequiredArgsConstructor를 사용하지 않는 생성자 주입은 아래와 같다. @Autowired가 붙은 생성자를 통해 객체를 주입하고 final 키워드를 통해 불변성을 보장한다.
@Service
public class SampleService {
private final SampleDAO event;
@Autowired // @Autowired 생략 가능. 생성자가 1개뿐이기 때문
SampleService(SampleDAO sampleDAO) {
this.event = sampleDAO;
}
}
이제 @RequiredArgsConstructor를 사용한 생성자 주입은 아래와 같으며, 자동으로 생성자를 생성해주었고 덕분에 상당히 코드가 간결해졌다. 그리고 @Autowired가 생략되었는데 그 이유는 Spring에서 1개뿐인 생성자에 @Autowired가 없을 경우 자동으로 인식해서 처리해 준다.
@Service
@RequiredArgsConstructor
public class SampleService {
private final SampleDAO sampleDAO;
}
정리
@RequiredArgsConstructor 어노테이션은 생성자를 자동으로 생성해 줘서 코드를 간결하게 만들어주고, Spring에서는 1개뿐인 생성자에 @Autowired가 없을 경우 자동으로 인식해서 처리해 준다. 하지만, 주입할 객체가 여러 개인 경우(인터페이스를 구현한 객체) @Primary, @Qualifier 어노테이션으로 주입해 주면 된다.
<Spring> @Qualifier이란?
@Qualifier이란? @Qualifier은 @Primary 어노테이션과 다르게 빈 객체에 이름을 지정하여 객체를 주입하는 방식이다. @Primary이란? @Primary이란? @Primary 어노테이션은 예를 들어 클래스 A에 인터페이스 B를
oniic.tistory.com
<Spring> @Primary이란?
@Primary이란? @Primary 어노테이션은 예를 들어 클래스 A에 인터페이스 B를 선언했는데 인터페이스를 구현한 객체 2개가 존재할 경우 스프링은 어느 객체를 주입해야 하는지 알 수 없게 되는데 주입
oniic.tistory.com
본 포스팅은 “자바 웹 개발 워크북/구멍가게 코딩단 저”를 읽고 학습한 내용을 정리한 것
'Java > Spring' 카테고리의 다른 글
| <Spring> 트랜잭션 프록시 내부 호출시 문제점 (0) | 2024.07.29 |
|---|---|
| <Spring> @SessionAttribute 이란? (0) | 2024.07.25 |
| <Spring> List, Map으로 빈 주입 받기 (0) | 2024.07.19 |
| <Spring> @Qualifier이란? (1) | 2023.10.09 |
| <Spring> @Primary이란? (0) | 2023.10.08 |
