스프링 프레임워크(5) 컨테이너 사용

넙데데맨·2022년 4월 18일
0

스프링 컨테이너

스프링의 빈을 생성 관리하는 컨테이너이다.
스프링 컨테이너에는 Bean FactoryApplicationContext 2가지 유형이 존재한다.

Bean Factory

스프링 설정파일에 등록된 Bean 객체를 생성 관리하는 기본 기능을 제공한다. 클라이언트의 요청에 의해 Bean 객체가 사용되는 시점에 객체를 생성하는 방식을 사용(Lazy Loading)

ApplicationContext

Bean Factory를 상속받는 스프링 컨테이너
Bean 객체를 생성, 관리하는 기능을 가지고 있으며
트랜잭션 관리, 메시지 기반 다국어 처리, AOP 처리, DI, IoC 등등의 기능 역시 지원한다
컨테이너 구동 시점에 객체를 생성 (Pre-Loading)

ApplicationContext의 종류

AbstractApplicationContext의 Interface를 구현한 구현체.

  • ClassPathXmlApplicationContext : ClassPath에 위치한 xml 파일을 읽어 설정 정보를 로딩, root로부터 경로를 지정함

  • FileSystemXmlApplicationContext : 파일 경로로 지정된 곳의 xml을 읽어 설정 정보를 로딩

  • XmlWebApplicationContext : 웹 어플리케이션에 위치한 곳에서 xml파일을 읽어 설정 정보를 로딩

  • AnnotationConfigApplicationContext : @Configuration 어노테이션이 붙은 클래스를 이용하여 설정 정보로 로딩

컨테이너 사용

컨테이너 사용을 위해 spring-context 추가

컨테이너에서 객체를 꺼내는 방법

id를 통한 호출

  1. Application Context 객체를 통해 xml 파일을 불러오기
  2. context.getBean(xml파일에서 지정한 id)

Program.java

ApplicationContext context = 
				new ClassPathXmlApplicationContext("spring/di/setting.xml");
ExamConsole console= (ExamConsole)context.getBean("console"); // 

setting.xml

<bean id="exam" class="spring.di.entity.NewlecExam"/>
<bean id="console" class="spring.di.ui.GridExamConsole">
  • 명시적으로 형변환 필요하다는 단점이 있다.

자료형을 통한 호출

context.getBean(클래스명.class)

ExamConsole console= context.getBean(ExamConsole.class);
  • 해당 명령어로 인터페이스를 불러올 경우 인터페이스로 구현된 여러 클래스들이 있을 수 있기 때문에 구분하는 작업 필요
profile
차근차근

0개의 댓글