먼저 @Autowired 어노테이션을 사용하기 위해서는 context 네임스페이스를 xml에 추가해줘야한다.
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
xmlns:context="http://www.springframework.org/schema/context">
annotation을 사용하지 않고 xml에서 exam을 console에 Injection함
//코드 내부
public void setExam(Exam exam){
this.exam=exam;
}
--------------------------------------------------
<!-- pom.xml -->
<bean id="exam" class="entity.NewlecExaml"/>
<bean id="console" class="ui.InlineExamConsole">
<property name="exam" ref="exam"/>
</bean>
annotaion을 사용하여 exam 객체를 console에 Injection함
//코드 내부
@Autowired
public void setExam(Exam exam){
this.exam=exam;
}
--------------------------------------------------
<!-- pom.xml -->
<context:annotation-config />
<bean id="exam" class="entity.NewlecExaml"/>
<bean id="console" class="ui.InlineExamConsole"/>
<context:annotation-config /> 구문을 통해 앞으로 @Autowired 어노테이션이 사용되는 경우 해당
객체가 컨테이너에 생성되었는지 확인하게 된다.
이 때, @Autowired는 exam이라는 객체를 자료형을 기준으로 찾는 것인가 변수명으로 찾는 것인가?
@Autowired
@Override
public void setExam(Exam exam){
this.exam=exam;
}
------------------------------------------------------------------------------
<!-- pom.xml -->
<context:annotation-config/>
<bean class="sprint.di.entity.NewLecExam"/>
=> bean의 class에서 자료형을 기준으로 부합되는 객체를 @Autowired를 통해 생성함(id 입력없이도 객체 찾음)
@Autowired
@Override
public void setExam(Exam exam){
this.exam=exam;
}
------------------------------------------------------------------------------
<!-- pom.xml -->
<context:annotation-config/>
<bean class="sprint.di.entity.NewLecExam" p:kor="10" p:eng="10"/>
<bean class="sprint.di.entity.NewLecExam" p:kor="20" p:eng="20"/>
만약 위와 같이 같은 객체가 두개 이상 컨테이너에 있으면 오류가 발생한다.
@Autowired
@Qualifier("exam1")
@Override
public void setExam(Exam exam){
this.exam=exam;
}
------------------------------------------------------------------------------
<!-- pom.xml -->
<context:annotation-config/>
<bean id="exam1" class="sprint.di.entity.NewLecExam" p:kor="10" p:eng="10"/>
<bean id="exam2" class="sprint.di.entity.NewLecExam" p:kor="20" p:eng="20"/>
단, Qualifier와 id를 사용하면 위와 같은 경우 오류가 발생하지 않고, id가 exam1인 객체를 받아온다.
'뉴렉쳐 스프링 프레임워크 정리' 카테고리의 다른 글
[17강] XML Configuration을 Java Configuration으로 변경하기 (0) | 2023.06.11 |
---|---|
[16강] 특화된 @Component 어노테이션(@Controller/@Service/@Repository) (0) | 2023.06.10 |
[15강] 어노테이션을 이용한 객체 생성 (0) | 2023.06.10 |
[14강] @Autowired의 위치와 Required 옵션 (0) | 2023.06.10 |