Spring

IoC(제어의 역행)과 DI(의존성 주입)

Clearing 2022. 9. 14. 11:46
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