번개멍
[Spring] 자동주입 본문
.자동 주입(AutoWire)
------------------------------------------------------------------------------------------------------------------------
- 기존에 생성자 주입, Setter 주입 등을 이용했었는데, 좀 더 편리하게 주입하기 위하여 사용합니다.
- 자동 주입은 이름, 타임, 생성자를 통하여 할 수 있습니다.
- 자동 주입은 객체 주소 값만 가능하므로 참조 변수를 제외한 나머지들은 직접 명시해 주어야 합니다.
즉 문자열, 정수형, 실수형 등
1) 이름을 이용하여 주입 방법
<bean id="data1" class='kr.co.ezen.beans.DataBean1'/>
TestBean.java
private DataBean1 data1;
private DataBean1 data2;
=> 자동 수입
<bean id ="data1" class="kr.co.ezen.beans.DataBean1" autowire="byName"/>
<bean class='kr.co.ezen.beans.TestBean' />
<!-- 자동주입 빈 정의 -->
<bean id='data1' class='kr.co.ezen.beans.DataBean1' />
<bean id='data2' class='kr.co.ezen.beans.DataBean2' />
2) 타입을 이용하여 자동 주입
byType : 빈 객체의 프로퍼티 타입과 정의된 빈의 타입이 일치할 경우에 주입합니다.
이때, 동일 타입의 빈이 두개 이상 정의되어 있으면 오류가 발생합니다.
<bean id='data3' class='kr.co.ezen.beans.DataBean3' />
DataBean3.java
----------------------------
private DataBean3 data1;
private DataBean3 data2;
3) 생성자를 이용하여 자동 주입
생성자의 매개변수 타입과 정의된 빈의 타입이 일치하면 주입합니다.
이때, 동일 타입의 빈이 두개 이상 정의되어 있으면 오류가 발생합니다.
<bean id="data3" class="kr.co.ezen.beans.TestBean3"/>
TestBean3
-------------------------
private DataBean3 data1;
private DataBean3 data2;
public TestBean3(TestBean3 data1, TestBean3 data2){
this.data1=data1;
this.data2=data2;
}
public int getData1() {
return data1;
}
public void setData1(int data1) {
this.data1 = data1;
}
public String getData2() {
return data2;
}
public void setData2(String data2) {
this.data2 = data2;
}
- 자동 주입은 객체 주소값만 가능하므로 참조변수를 제외한 나머지는 다 직접 명시해주어야 합니다.
즉, 문자열, 정수형, 실수형 등
- 자동 주입 설정을 하지 않고, 이름을 가지고 주입을 시도한다면 어떻게 될까요?
'코딩이야기 > Spring' 카테고리의 다른 글
[Spring]AOP Interceptor (0) | 2020.07.10 |
---|---|
[Spring]Execution (0) | 2020.07.06 |
[spring]AspectJ (0) | 2020.07.06 |
[Spring] 어노테이션 정리 (0) | 2020.07.01 |
[Spring]스프링의 이해? (0) | 2020.06.25 |