티스토리 뷰

@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

 

 


본 포스팅은 “자바 웹 개발 워크북/구멍가게 코딩단 저”를 읽고 학습한 내용을 정리한 것

댓글
최근에 올라온 글
«   2026/03   »
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
글 보관함
Total
Today
Yesterday