스프링 강의 14강 _ @Autowired의 위치와 required 옵션

스프링 강의 14강 _ @Autowired의 위치와 required 옵션

인젝션 하는 방법 크게 2가지

1. setter 인젝션

2. constructor 인젝션 (생성자 오버로드)

특이한 다른 방법은

필드에 @Autowired를 붙이는 방법인데

개념적으로는 기본생성자에서 객체를 바인딩하는 작업이다.

하지만 직접 사용해보면 문제가 되는 점을 알아보자.

기본생성자 호출하면서 인젝션 된다.

seeter 함수가 호출 되면서 바인딩 되는 방식

기본 생성자를 인젝션하는 방식을 쓸때는

오버로드 생성자가 있다면 기본 생성자도 명시를 해줘야한다(위 이미지는 주석 달아놨으니 오류 발생한다)

기본 생성자를 명시하지 않았다면 오버로드 생성자도 없애야 한다.

오버로드 생성자에 인젝션할 경우 (Exam exam)을 복수로 생성할 수 있으므로 오류가 발생

굳이 하고 싶다면 위와 같이 하면 된다.

setting.xml에서 객체 없이 인젝션하고 싶다면

@Autowired(required=false)

@Qualifier("exam2")

로 작성하는 방법도 있다.

https://www.youtube.com/watch?v=MlTk1AFMIzU&list;=PLq8wAnVUcTFUHYMzoV2RoFoY2HDTKru3T&index;=14

from http://late90.tistory.com/111 by ccl(A) rewrite - 2021-12-28 02:01:27