728x90
인젝션 하는 방법 크게 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
728x90
'Spring' 카테고리의 다른 글
스프링 강의 16강 _ 특화된 @Component 어노테이션 (@Controller/@Service/@Repository) (0) | 2021.12.28 |
---|---|
스프링 강의 15강 - 어노테이션을 이용한 객체생성 (0) | 2021.12.28 |
스프링 강의 13강 - @Autowired의 동작방식 이해와 @Qualifier 사용하기 (0) | 2021.12.27 |
스프링 강의 12강 _ 어노테이션을 이용할 때의 장점과 @Autowired를 이용한 DI 해보기 (0) | 2021.12.27 |
스프링 강의 11강 _ 콜렉션 생성과 목록 DI (0) | 2021.12.27 |
댓글