프로그래밍 공부/Spring

[Spring] @Autowired의 위치와 Required 옵션

valid_ming 2021. 4. 30. 21:31

 

뉴렉처 강사님의 동영상 강의를 정리한 글입니다.

 

 

@Autowired와 @Qualifier의 위치

 

1. setter 함수 위

2. field 위 -> 기본 생성자에서 객체 binding

3. 오버로드 생성자 위

 

3번의 경우 여러개의 argument를 가질 수 있기 때문에 

각 argument 앞에 @Qualifier을 붙여 주어야 한다.

 

@Autowired
public InlineExamConsole(
	@Qualifier("exam1")Exam exam1, 
	@Qualifier("exam2")Exam exam2) {
  	System.out.println("overloaded constructor");
  	this.exam = exam1;
}

 

@Autowired를 설정한 경우 DI할 객체가 없으면 에러가 발생한다.

하지만, 이후에 객체를 DI 할 수도 있고 현재 DI를 하지 않아도 문제될 상황이 아니라면,

에러가 나지 않는 것을 원할 수 있다.

 

이때 Autowired의 required 옵션을 이용하여 DI 할 객체가 없더라도 에러가 나지 않도록 설정해 줄 수 있다.

 

@Autowired(required = false)
@Qualifier("exam2")
private Exam exam;