728x90
DI란 Dependency Injection으로 모듈 간의 의존성을 모듈의 내부가 아닌 외부(컨테이너)에서 주입시켜주는 것으로
IoC(제어의 역행)의 한 종류이며 외부에서 필요한 객체를 결정하기 때문에 개발자는 직접 연결할 필요가 없고
인터페이스를 이용하여 편리하게 관리할 수 있다.
의존관계를 IoC하는 방법 ( 의존성을 주입하는 방법)
1) 생성자 인젝션 (Constructor Injection)
생성자를 이용하여 의존성을 주입하는 방식으로 클래스 생성 시 인자를 받아 생성되는 생성자를 만들어
설정 파일에서 태그를 이용하여 인자를 주입시켜 준다.
<bean id="a" class="test.A">
<constructor-arg ref="주입할 객체명" />
<constructor-arg value="주입할 값" />
</bean>
2) setter 인젝션 (Setter Injection)
인자가 없는 기본 생성자를 사용하여 객체를 생성한 후, setter 메서드로 의존성을 주입하는 방식으로
마찬가지로 설정 파일에서 태그를 이용하여 속성 값을 부여한다.
setter 인젝션을 할 때에는, p 네임스페이스와 함께 이용할 수도 있다.
<bean id="a" class="test.A">
<property name="변수명 a" ref="주입할 객체명"/>
<property name="변수명 b" value="주입할 값" />
</bean>
위와 아래는 같은 결과값이 나온다.
<bean id="a" class="test.A" p:멤버변수명-ref="주입할 객체명" p:멤버변수명="주입할 값" />
List에 속성값 부여
<bean id="tb" class="test.TestBean">
<property name="datas">
<list>
<value>서울시</value>
<value>서울시 관악구</value>
<value>사당역</value>
</list>
</property>
</bean>
Set에 속성값 부여
<bean id="tb" class="test.TestBean">
<property name="datas">
<set>
<value>서울시</value>
<value>서울시</value>
<value>사당역</value>
</set>
</property>
</bean>
map에 속성값 부여
<bean id="tb" class="test.TestBean">
<property name="datas">
<map>
<entry>
<key><value>아무무</value></key>
<value>서폿</value>
</entry>
<entry>
<key><value>티모</value></key>
<value>탑</value>
</entry>
<entry>
<key><value>아리</value></key>
<value>미드</value>
</entry>
</map>
</property>
</bean>
728x90
'Spring' 카테고리의 다른 글
[AOP] JoinPoint와 바인드 변수 (0) | 2022.09.17 |
---|---|
AOP(관점 지향 프로그래밍) (0) | 2022.09.16 |
어노테이션(@)을 이용한 의존성 주입 (0) | 2022.09.15 |
Ioc (제어의 역행) (0) | 2022.09.14 |
Spring 설치 및 설정 + 장점 (0) | 2022.09.13 |