@Autowired의 역할
설정 정보를 등록하는 방법은 두 가지가 있다.
- xml 이용해 외부 파일에 설정 정보를 등록하는 방법
→ <property> 태그를 이용해 직접 XML 파일에 설정 정보를 등록<bean id="console" class="spring.di.ui.InlineExamConsole" > <!-- console.setExam(exam); --> <property name="exam" ref="exam"/> </bean>
- annotation을 이용해 클래스 파일에 설정을 심는 방법 - 코드에 설정을 심는, 즉 metadata를 심는 것
→ XML 파일에 <property> 가 사라지고, class 파일(InlineExamConsole)에 @Autowired와 같은 annotation을 추가<bean id="console" class="spring.di.ui.InlineExamConsole" > </bean>
@Autowired 사용하기
annotation을 이용하는 방법의 시작은 @Autowired를 사용하는 것이다.
Autowired는 객체를 불러올 때 자동으로 인젝션이 될 수 있게 하는 역할을 한다.
불러오는 기준
1. 클래스명(Exam)이 같은 bean
2. 여러 객체가 있을 경우 세터 메소드가 정의될 때의 가인수의 이름(exam)과 id가 같은 bean
보다 명확하게 하기 위해서는 @Autowired 아래에 @Qualifier("AAA") 와 같이 정의해주면 이 Qualifier의 값과 id가 같은 bean을 불러온다.
사용 예시
1. 자동으로 불러오고 싶은 세터위에 @Autowired 를 추가한다.
//bean이 참조하는 java파일의 세터위에
@Autowired
@Qualified("exam")
@Override
public void setExam(Exam exam) {
this.exam = exam;
}
2. <bean> 태그들 상단에는 Autowired가 필요한 객체들이 있다는 것을 알려주기 위해 다음과 같은 코드를 추가한다. (여러 개 있더라도 한 번만)
//<bean> 태그들 상단에
<context:annotation-config />
위와 같은 준비를 하고 나면, xml 파일에서 더 이상 <property> 태그로 세터를 사용하지 않아도 자동으로 setExam이 실행되면서 exam이 인젝션 된다.
<bean id="console" class="spring.di.ui.InlineExamConsole" >
</bean>
위치
꼭 @Autowired가 세터 위에만 위치하는 것은 아니고, 다음과 같이 다양한 곳에 위치할 수 있다.
1. 필드: 기본 생성자 실행
2. 생성자 위: 해당 생성자 실행
3. 세터 위: 해당 세터 실행
만약 생성자에서 @Qualifier가 두 개 이상 필요한 경우
생성자(@Qualifier("A") Exam exam1, @Qulaifier("B") Exam exam2) 과 같이 정의한다.
'BackEnd > Spring' 카테고리의 다른 글
[Spring] XML Configuration을 Java Configuration으로 변경하기 (0) | 2021.09.08 |
---|---|
[Spring] @Component의 역할 (0) | 2021.09.08 |
[Spring] 이클립스에 Maven Repository 라이브러리 가져오기 (0) | 2021.08.28 |
[Spring] Application Context 작성하기 (0) | 2021.08.28 |
[Spring] Spring DI 지시서 작성하기 (Spring Bean Configuration) (0) | 2021.08.26 |
댓글