https://www.youtube.com/playlist?list=PLq8wAnVUcTFUHYMzoV2RoFoY2HDTKru3T
스프링 강의를 듣고 정리한 내용입니다
@Autowired의 위치와 Required 옵션
@Autowired는 필드 위에도 쓸 수 있다
@Autowired
private Exam exam;
기본 생성자를 호출하여 Injection
InlineExamConsole 클래스
@Autowired
@Qualifier("exam2")
public Exam exam;
public InlineExamConsole() {
System.out.println(“constructor”);
}
public InlineExamConsole(Exam exam) {
System.out.println(“overloaded constructor”);
this.exam = exam;
}
▷ setter에 @Autowired한 것과의 차이점
setter는 set 함수가 호출되면서 Injection 된다
기본 생성자를 지우는 경우 Injection 되지 않아 오류가 발생한다
-> 생성자가 존재하지 않는 경우에만 오류가 나지 않는다
생성자에 @Autowired 하는 경우
-> 파라미터에 Qualifier를 지정한다
@Autowired
public InlineExamConsole(
@Qualifier("exam1") Exam exam1,
@Qualifier("exam2") Exam exam2) {
System.out.println("overloaded constructor");
this.exam = exam;
}
@Autowired 사용시 객체 설정이 필수적이다
-> @Autowired(required = false)를 사용하면 기본 생성자를 통해서 실행된다
@Autowired(required = false)
@Qualifier("exam2")
private Exam exam;
@Override
public void print() {
if(exam == null)
System.out.printf("total is %d, avg is %f\n", 0, 0);
else
System.out.printf("total is %d, avg is %f\n", exam.total(), exam.avg());
}
'백엔드 > Spring' 카테고리의 다른 글
Spring - 어노테이션으로 값 초기화, 설정 | TIL_158 (0) | 2022.11.01 |
---|---|
Spring - 어노테이션으로 객체 생성 | TIL_157 (0) | 2022.10.26 |
Spring - @Autowired의 참조 기준 | TIL_155 (0) | 2022.10.22 |
Spring - 어노테이션의 장점 | TIL_154 (0) | 2022.10.20 |
Spring - Collection 생성&목록 DI | TIL_153 (0) | 2022.10.17 |