객체 생성과 Autowired
public void setExam(Exam exam) {
this.exam = exam;
}
IoC컨테이너는 객체를 생성하고 조립하는 과정을 담는 그릇.
스프링이 xml을 읽는다면
<bean id ="exam" class ="entity.NewlecExam" />
<bead id ="console" class = "ui.InlineExamConsole">
<property name ="exam" ref="exam" />
</bean>
위의 지시서대로 객체를 생성하고, setter함수에다가 injection이 일어나면서 참조하는 것이 일어남.

property를 지우고, setter에다가 @Autowired annotation을 지정해준다.
하지만 문제는 이러면 객체를 생성하라는 말만 있을 뿐이다.
그래서
<context:annotation-config />
xml파일에 를 삽입해준다. 그럼 어노테이션을 확인한다.
그럼 @Autowired를 확인하고, setter의 객체를 자동으로 찾아서 셋팅해달라는 것을 확인한다.
그럼 IoC컨테이너 안에 생성되어있는 객체들을 찾아올 것인데, 어떤 형식으로 찾아올 것인지가 궁금할 것이다.
Autowired는 자동으로 부합되는 객체를 찾아서 바인딩을 해준다.
인터페이스 명을 참조할 수 있는 클래스를 자동으로 찾아준다는 말이다
즉, bean id = "exam1" 뿐 아니라, 아예 id값을 삭제해버려도 자동으로 바인딩해준다.
그럼 같은 형식을 가진 객체가 있다면 어떻게 될까?

결과는 에러가 난다.
그럼 하나의 bean id에 객체값을 지정해준다면 어떻게 될까?
결과는 에러가 나지 않는다.
id값이 두 개이상일 때 Qualifier 어노테이션을 이용해서 맞춰준다.

그럼 결과는 정상적으로 작동될 것이다.

결론
@Autowired 를 이용할 때, 자료형식을 기본으로 하지만 식별이 모호할 땐 변수명도 쓴다.
하지만 변수명을 xml파일에 맞추는 것은 좀 문제가 있기 때문에 @Qualifier()라는 어노테이션을 이용한다.
'개발공부 > Spring' 카테고리의 다른 글
[spring] 어노테이션을 이용한 객체 생성 (0) | 2022.01.25 |
---|---|
[spring] @Autowired 위치와 required 옵션 (0) | 2022.01.25 |
[spring] 어노테이션을 이용할 때의 장점과 @Autowired를 이용한 DI (0) | 2022.01.24 |
[Spring Framework] 콜렉션 생성과 DI (0) | 2022.01.21 |
[Spring Framework] 생성자 DI (0) | 2022.01.20 |
객체 생성과 Autowired
public void setExam(Exam exam) {
this.exam = exam;
}
IoC컨테이너는 객체를 생성하고 조립하는 과정을 담는 그릇.
스프링이 xml을 읽는다면
<bean id ="exam" class ="entity.NewlecExam" />
<bead id ="console" class = "ui.InlineExamConsole">
<property name ="exam" ref="exam" />
</bean>
위의 지시서대로 객체를 생성하고, setter함수에다가 injection이 일어나면서 참조하는 것이 일어남.

property를 지우고, setter에다가 @Autowired annotation을 지정해준다.
하지만 문제는 이러면 객체를 생성하라는 말만 있을 뿐이다.
그래서
<context:annotation-config />
xml파일에 를 삽입해준다. 그럼 어노테이션을 확인한다.
그럼 @Autowired를 확인하고, setter의 객체를 자동으로 찾아서 셋팅해달라는 것을 확인한다.
그럼 IoC컨테이너 안에 생성되어있는 객체들을 찾아올 것인데, 어떤 형식으로 찾아올 것인지가 궁금할 것이다.
Autowired는 자동으로 부합되는 객체를 찾아서 바인딩을 해준다.
인터페이스 명을 참조할 수 있는 클래스를 자동으로 찾아준다는 말이다
즉, bean id = "exam1" 뿐 아니라, 아예 id값을 삭제해버려도 자동으로 바인딩해준다.
그럼 같은 형식을 가진 객체가 있다면 어떻게 될까?

결과는 에러가 난다.
그럼 하나의 bean id에 객체값을 지정해준다면 어떻게 될까?
결과는 에러가 나지 않는다.
id값이 두 개이상일 때 Qualifier 어노테이션을 이용해서 맞춰준다.

그럼 결과는 정상적으로 작동될 것이다.

결론
@Autowired 를 이용할 때, 자료형식을 기본으로 하지만 식별이 모호할 땐 변수명도 쓴다.
하지만 변수명을 xml파일에 맞추는 것은 좀 문제가 있기 때문에 @Qualifier()라는 어노테이션을 이용한다.
'개발공부 > Spring' 카테고리의 다른 글
[spring] 어노테이션을 이용한 객체 생성 (0) | 2022.01.25 |
---|---|
[spring] @Autowired 위치와 required 옵션 (0) | 2022.01.25 |
[spring] 어노테이션을 이용할 때의 장점과 @Autowired를 이용한 DI (0) | 2022.01.24 |
[Spring Framework] 콜렉션 생성과 DI (0) | 2022.01.21 |
[Spring Framework] 생성자 DI (0) | 2022.01.20 |