프로그래밍 공부/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;