본문 바로가기
백엔드/Spring

[spring] @RequiredArgsConstructor

by 작은소행성 2022. 3. 25.

 @RequiredArgsConstructor

다음 어노테이션은 초기화 되지 않은 final 필드나 @NonNull 이 붙은 필드를 인자값으로 하는 생성자를

@RequiredArgsConstructor 가 대신 생성해주는 것이다. 

해당 클래스의 의존성 관계가 변경될 때마다 생성자 코드를 계속해서 수정해야하는 번거로움을 해결하고자

즉, 의존성 주입(DI)의 편의성을 위해 사용되는 것이다. 

 

 

스프링에서 생성자로 주입받을 때 주로 @Autowired 를 사용했는데 

@Autowired 보다 @RequiredArgsConstructor 로 생성자를 주입 받는게 권장하는 방법이라고 한다. 

 

 

어노테이션 사용

@RequiredArgsConstructor
@Service
public class ApiService {
    private final ApiRepository apiRepository;
}

 

생성자 주입

@Service
public class ApiService {
    private final ApiRepository apiRepository;
    
    @Autowired
    public ApiService(ApiRepository apiRepository){
    	this.apiRepository = apiRepository;
    }
}

 

Setter 주입

@Service
public class ApiService {
    private final ApiRepository apiRepository;
    
    @Autowired
    public void setApiService(ApiRepository apiRepository){
    	this.apiRepository = apiRepository;
    }
}

 

필드 주입

@Service
public class ApiService {
	@Autowired
    private ApiRepository apiRepository;
}

 

 

반응형