가희의자기개발블로그

DI(Dependency Injection) 본문

백엔드/Spring

DI(Dependency Injection)

가희gahui 2020. 7. 10. 12:03
반응형

DI (Dependency Injection)

스프링의 핵심 개념

객체사이의 의존 관계를 자기 자신이 아닌 외부에 의해서 설정된다는 개념이다

스프링에서는 설정파일을 사용하여 손쉽게 객체간의 의존관계를 설정하기에 스프링을 DI컨테이너라고 부르기도 한다.

DI 컨테이너는 어떤 클래스가 필요로 하는 인스턴스를 자동으로 생성, 취득하여 연결시켜주는 역활을 한다.

DI 컨테이너가 인스턴스를 생성하도록 하려면 프로그램 소스 내부에서 new 로 직접 생성하지 않고 설정파일에서 필요로 하는 클래스의 정보를 설정해 주어야한다.

 

스프링은 각 클래스간의 의존관계를 관리하기 위한 방법

- Constructor Injection

- Setter Injection

 

. Constructor Injection

: 생성자를 통해서 의존 관계를 연결시키는 것을 말한다.

: 생성자를 통해서 의존 관계를 연결하기 위해서는 XML 설정 파일에서 <bean>요소의 하위요소로 <constructor-arg>를 추가해야 한다.

 

1. 객체를 전달할 경우에는 ref요소를 사용

public class Foo {

private Bar bar;

 

public Foo(Bar bar){

this.bar = bar;

}

}

 

[applicationContext.xml]

<bean id="foo" class="Foo">

<constructor-arg>

<ref bean="bar" />

</constructor-arg>

</bean>

<bean id="bar" class="Bar" />

 

2. 전달인자가 2개 이상인 경우

기본데이터 타입일 경우에는 <value>요소를 사용하여 의존관계를 연결시키기 위한 값을 지정

public class Foo {

public Foo(int a, String b) { }

}

 

[applicationContext.xml]

<bean id="foo" class="Foo">

<constructor-arg index="1" value="Hello" />

<constructor-arg index="0">

<value>25</value>

</constructor-arg>

</bean>

<bean id="bar" class="Bar" />

 

3. type 속성을 이용하여 지정

 

[applicationContext.xml]

<bean id="foo" class="Foo">

<constructor-arg type="int" value="25" />

<constructor-arg type="java.lang.String" value="Hello" />

</bean>

 

. Setter Injection

: setter메소드를 이용하여 의존 관계를 연결시키는 것을 말한다.

: <property>요소의 name 속성을 이용하여 값의 의존 관계를 연결시킬 대상이 되는 필드값을 지정한다

 

public class Foo {

private Bar bar;

 

public void setBar(Bar bar){

this.bar = bar;

}

}

 

[applicationContext.xml]

<bean id="foo" class="Foo">

<property name="bar" ref="bar"></property>

</bean>

 

<bean id="bar" class="Bar" />

 

반응형

'백엔드 > Spring' 카테고리의 다른 글

스프링 MVC  (0) 2020.07.16
스프링과 JDBC  (0) 2020.07.15
스프링 AOP -관점지향 프로그램  (0) 2020.07.14
eclipse -STS설치후 안켜지는 오류  (0) 2020.07.08
Spring Framework  (0) 2020.07.08
Comments