의존성 주입이란 애플리케이션 작동에 필요한 객체를 제 3자로부터 제공받는 것이다. 그리고 그 제 3자가 스프링 컨테이너이다. 그래서 스프링 컨테이너는 애플리케이션에서 사용되는 객체(스프링 빈)의 라이프사이클(객체 생성, 의존성 주입, 소멸)을 관리한다. 스프링 컨테이너의 종류는 다음과 같다.
BeanFactory
ApplicationContext
WebApplicationContext
위에서 언급했듯이 스프링 빈이란 스프링 컨테이너가 관리하는 Java 객체를 의미한다. 스프링 컨테이너가 스프링 빈을 관리하도록 하기 위해서는 스프링 빈 설정파일에 객체들의 정보를 정의해서 스프링 빈으로 등록해야 한다.
package com.sample.controller;
import com.sample.dao.UserOracleDao;
public class UserController {
private UserOracleDao userOracleDao;
public void setUserOracleDao(UserOracleDao userOracleDao) {
this.userOracleDao = userOracleDao;
}
// 의존성 주입이 되었는지 확인하는 메서드.
public void test() {
System.out.println(userOracleDao);
}
}
UserController는 UserOracleDao를 멤버변수로 갖고 있고, UserOracleDao를 매개변수로 전달받아 자기 자신의 멤버변수에 대입하는 메서드를 갖고 있다. 그리고 대입된 멤버변수인UserOracleDao를 출력하는 메서드를 갖고 있다. 즉, UserController는 UserOracleDao를 의존한다.