[spring] @Autowired의 동작방식 이해와 @Qualifier 사용하기

2022. 1. 25. 01:48· 개발공부/Spring
목차
  1. 결론

객체 생성과 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
  1. 결론
'개발공부/Spring' 카테고리의 다른 글
  • [spring] 어노테이션을 이용한 객체 생성
  • [spring] @Autowired 위치와 required 옵션
  • [spring] 어노테이션을 이용할 때의 장점과 @Autowired를 이용한 DI
  • [Spring Framework] 콜렉션 생성과 DI
환타몬
환타몬
일상과 개발에 대한 이야기를 올리는 일기장
환타몬
일상에 개발 더하기
환타몬
전체
오늘
어제
  • 분류 전체보기 (191)
    • 일상 (1)
    • 개발공부 (2)
      • Maven (10)
      • Spring Boot (22)
      • Web (7)
      • DataBase (2)
      • Error (4)
      • Spring (24)
      • Python 문법 (7)
      • Java 문법 (2)
      • 객체 지향 입문 (22)
      • 객체 지향 핵심 (17)
      • Java와 자료구조 (5)
      • Java (14)
    • FrontEnd (2)
      • TypeScript (0)
      • React (2)
    • 코딩테스트 연습 (45)
      • 프로그래머스 (37)
      • 백준 (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • Python
  • maven
  • 코딩테스트
  • 파이썬
  • 코딩
  • Gson
  • 프로그래머스
  • JSON
  • 알고리즘
  • 다시풀기
  • git

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.2
환타몬
[spring] @Autowired의 동작방식 이해와 @Qualifier 사용하기
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.