Home » SPRING -2. DI (Dependent Injection)

SPRING -2. DI (Dependent Injection)

2.1. DI (Dependency Injection:의존성 주입)

  • Spring이 관리하는 객체를 DI를 통해 실제 소스에서 사용 가능하게 만들고 있다.
  • DI에 대해서 설명하자면 다음과 같다.

  • TestController에서 TestService에 있는 getMessage를 호출해 메세지를 받아오는 기능을 구현한다고 할 때 만들 수 있는 경우는 다음과 같다.

1) TestService 객체를 직접 생성 후 호출

2) DI를 통한 Bean 주입된 객체로 호출

  • 1번의 경우 getTestList를 호출하기 위해서 개발자가 직접 TestService 객체를 생성하여 호출하고 있는 반면, 2번의 경우 TestService를 컨트롤러가 호출만 할 뿐, 객체의 생성 및 주입에 대한 제어는 Spring Framework가 알아서 해주고 있다.

  • 이렇듯 제어의 주체가 바뀐 것을 IoC(Inversion of Control:제어의 역전)이라 하고, Spring에서는 이를 DI라 한다.

2.2. DI를 통한 bean 주입

  • TestService를 Spring에서 관리하기 위해서는 bean으로 등록해야 한다.

2.2.1. @Annotation 사용

[ TestService.java ]

  • 상단에 @Service를 사용하여 자동 Bean을 등록한다.
  • 이는 serlvet-context.xml에 ‘< context:component-scan >’ 을 미리 설정을 했기에 때문에 가능한 것이다.

[ TestController.java ]

  • bean으로 등록된 TestService를 주입하기 위해 @AutoWired를 사용하여 자동으로 bean 주입.

2.2.2. XML 설정 사용

[ serlvet-context.xml ]

  • xml을 통해 TestService를 bean으로 등록

[ TestController.java ]

  • bean으로 등록된 TestService를 주입하기 위해 setter 생성.