2019백업

4) 스프링프레임워크 DI의 개념

728x90

DI의 개념

각 클래스간의 의존관계를 빈 설정(Bean Definition) 정보 바탕으로 컨테이너가 자동으로 연결해주는 것을 말한다.

-개발자들은 단지 빈 설정파일에서 의존관계가 필요하다는 정보를 추가하면 된다.

- 객체 레퍼런스를 컨테이너로부터 주입 받아서, 실행 시에 동적으로 의존관계가 생성된다.

- 컨테이너가 흐름의 주체가 되어 애플리케이션 코드에 의존관계를 주입해 주는 것이다.

 

DI의 장점

-코드가 단순해진다.

-컴포넌트 간의 결합도가 제거된다.

 

- Hello 클래스는 직접적으로 StringPrinter와 ConsolePrinter을 호출하지 않는다.

- 설정 파일(bean.xml)에 어떤상황에 String,ConsoleHello에게 주입할지 적어준다.

 

bean.xml 주입 방법 (Setter, 생성자)

1. Setter Injection 방법

1)bean.xml 설정 파일에 hello라는 클래스에 있는 setNamesetPrinter을 설정해준다.

bean.xml

<bean id="hello" class="bean.Hello">

       <property name="name" value

</bean>

Hello.java

public void setName(String name) {
this.name = name;
}
public void setPrinter(Printer printer) {
this.printer = printer;
}

 

2. Constructor Injection 방법

1) 클래스에 생성자를 선언을 하고

Hello.java

public Hello(String name, Printer printer) {

      this.name = name;

      this.printer = printer;

}

2) beans.xml 설정파일에서 constructor-arg index=“0” value=“Spring”을 이용해 넣어준다.

bean.xml

<bean id="hello" class="bean.Hello">

      <constructor-arg index="0" value="Spring" />

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

</bean>

 


Spring DI 컨테이너의 개념

spring DI 컨테이너가 관리하는 객체를 빈(bean)이라고 하고, 이 빈(bean)들을 관리한다는 의미로 컨테이너를 빈 팩토리(BeanFactory)라고 부른다.

 

BeanFactory와 ApplicationContext

BeanFactory

-Bean을 등록, 생성, 조회, 반환 관리함

- 보통은 BeanFactory를 바로 사용하지 않고, 이를 확장한 Application Context를 사용함.

- getBean() 메서드가 정의되어있음

 

Application Context

 

- Bean을 등록, 생성, 조회, 반환 관리하는 기능은 BeanFactory와 같음

- Spring의 각종 부가 서비스를 추가로 제공함

- Spring이 제공하는 ApplicationContext구현 클래스가 여러 가지 종류가 잇음

 

 

 

반응형

'2019백업' 카테고리의 다른 글

namespace는 무엇이고 XML은 무엇일까?  (0) 2019.06.20
4-1) DI 예시 코드  (0) 2019.06.20
3. Spring Framework 개요  (0) 2019.06.20
2. 프레임워크의 구성요소와 종류  (0) 2019.06.20
1. 디자인 패턴과 프레임워크  (0) 2019.06.20