본문 바로가기
Java

@RequiredArgsConstructor 란? (+ 사용 예시 / @Autowired보다 지향되는 이유)

by yapdol 2023. 8. 29.

 

 

 

 

 

 

 

@RequiredArgsConstructor 란?

자바 라이브러리 중 하나인 롬복(Lombok)이 제공하는 기능 중 하나로,

스프링에서 생성자를 자동으로 설정해주는 어노테이션.

 

- final / @NotNull 인 필드 값을 파라미터로 받아 생성자를 만들어줌.

- @Autowired 없이 생성자를 만들어줌 (=@Autowired를 사용하지 않고 의존성 주입)

 

 

 

 @Autowired 보다 @RequiredArgsConstructor 가 지향되는 이유

 

📌 순환 참조 방지

: @Autowired 를 쓰면 빈 순환 참조 문제가 발생해 서버가 죽어버릴 수 있음.

*순환 참조 :  A가 B의 빈을 주입받고 , B가 A의 빈을 주입받으며, 서로 순환되어 참조하는 경우 .

 

📌 테스트 코드 작성 용이

: 스프링 컨테이너의 도움 없이 테스트 코드를 편리하게 작성 가능.

 

 

 

 @RequiredArgsConstructor 사용 예시

@RestController
@RequiredArgsConstructor
pulbic class example {

 private final MemberService memberService // fianl이 붙은 memberservice 필드 생성자 자동 생성
 
}

 

 

 

 

 

참고자료 :

https://velog.io/@limsubin/Spring-Boot%EC%97%90%EC%84%9C-Autowired-%EB%8C%80%EC%8B%A0-RequiredArgsConstructor-%EB%A5%BC-%EC%8D%A8%EB%B3%B4%EC%9E%90

 

Spring Boot에서 @Autowired 대신 @RequiredArgsConstructor 를 써보자!

1. Version 💬 spring boot : 2.6.1 2. 의존성 주입이란? 💬 DI 컨테이너에서 관리할 객체를 지정해주고, 코드내에서 객체를 받아 사용하는 방식이다. 예전에는 new className() 또는 getInstance() 등의 메서드

velog.io

https://insanelysimple.tistory.com/346

 

생성자 annotation 정리 (NoArgsConstructor, AllArgsConstructor, RequiredArgsConstructor)

생성자 annotation 정리 @NoArgsConstructor 파라미터가 없는 기본생성자를 만들어줍니다. // before @NoArgsConstructor public class NoArgsConstructorTestClass { } // after public class NoArgsConstructorTestClass { public NoArgsConstructo

insanelysimple.tistory.com

https://dreamcoding.tistory.com/83

 

@RequiredArgsConstructor란?

Lombok으로 스프링에서 DI(의존성 주입)의 방법 중에 생성자 주입을 임의의 코드없이 자동으로 설정해주는 어노테이션이다. @RequiredArgsConstructor는 초기화 되지않은 final 필드나, @NonNull 이 붙은 필드

dreamcoding.tistory.com