[Spring] 스프링 컨테이너와 스프링 빈, 의존성 주입

김용준·2023년 1월 28일

Spring

목록 보기
2/2

스프링 컨테이너

의존성 주입이란 애플리케이션 작동에 필요한 객체를 제 3자로부터 제공받는 것이다. 그리고 그 제 3자가 스프링 컨테이너이다. 그래서 스프링 컨테이너는 애플리케이션에서 사용되는 객체(스프링 빈)의 라이프사이클(객체 생성, 의존성 주입, 소멸)을 관리한다. 스프링 컨테이너의 종류는 다음과 같다.

  • BeanFactory

    • spring-bean.jar에 포함되어 있는 스프링 컨테이너 인터페이스이다. 객체 생성, 의존성 주입과 같은 간단한 기능만 제공한다.
    • 구현 클래스 : XmlBeanFactory
  • ApplicationContext

    • spring-context.jar에 포함되어 있는 스프링 컨테이너 인터페이스이다. 객체 생성, 의존성 주입, 관점지향 프로그래밍, 국제화, EJB 연동 등 다양한 기능을 제공한다.
    • 구현 클래스 : ClasspathXmlApplicationContext, FilesystemXmlApplicationContext, GenericXmlApplicationContext
  • WebApplicationContext

    • spring-web.jar에 포함되어 있는 스프링 컨테이너 인터페이스이다. ApplicationContext 인터페이스와 기능은 유사하고, 웹 환경에 최적화되어 있다.
    • 구현 클래스 : XmlWebApplicationContext

스프링 빈

위에서 언급했듯이 스프링 빈이란 스프링 컨테이너가 관리하는 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);
	}
}

UserControllerUserOracleDao를 멤버변수로 갖고 있고, UserOracleDao를 매개변수로 전달받아 자기 자신의 멤버변수에 대입하는 메서드를 갖고 있다. 그리고 대입된 멤버변수인UserOracleDao를 출력하는 메서드를 갖고 있다. 즉, UserControllerUserOracleDao를 의존한다.

스프링 빈 등록

profile
차선이 모여 최선이 된다.

0개의 댓글