본문 바로가기

Spring

1-3. 스프링 컨테이너 및 설정 파일

스프링 설정 파일

src/main/resources 에 Spring Bean Definition file 추가해줍다.

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

	<bean id="tv" class="polymorphism.SamsungTV" />
</beans>

bean 엘리먼트서 가장 중요한 것은 class 입니.
기에 패키지 경로가 포된 전체 클래스 경로를 지정해합니다.

스프링 컨이너 구동 및 테스

package polymorphism;

import org.springframework.context.support.AbstractApplicationContext;
import org.springframework.context.support.GenericXmlApplicationContext;

public class TVUser {
	public static void main(String[] args) {
		// 1. Spring 컨테이너를 구동한다.
		AbstractApplicationContext factory = 
				new GenericXmlApplicationContext("applicationContext.xml");
	}
}

TVUser 클래음과 같이 수합니다.
스는 환경정 파일인 applicationContext.xml을 로딩하 스프링 컨테너 중 GenericXmlApplicationContext를 구동습니다.

TVUser 클래스 동 시 applicationContext.xml 일을 로딩한는 메시가 출력되 GenericXmlApplicationContext 객가 생성되어 스프링 컨테너가 구동됐는 메시가 출됩니다.

TVUser 클라언트가 스프링 정 파일을 로딩며 컨테이너 구동하고
스프링 설 파일에 bean로 등록 SamsungTV 객체를 생성해준 getBean 메드를 통 tv 객체 SamsungTV 체를 반환하 종료했습다.

TV를 LgTV로 바 때 TVUser.java 경 없이 applicationContext.xml 파만 수정하여 체하면 됩니다.

스프링 테이너 종류

GenericXmlApplicationContext
: 일반적인 XML 설정 파일을 로드하여 사용하는 컨텍스트로, GenericApplicationContext의 하위 클래스입니다.

  • 독립적인 환경에서 사용: 독립 실행 애플리케이션 또는 테스트 환경에서 주로 사용.
  • 파일 경로 지원: 클래스패스 또는 파일 시스템 경로에서 XML 설정 파일을 로드.
  • 유연성: Java 설정(registerBean())과 XML 설정을 혼합하여 사용할 수 있음.
  • 웹 환경 비의존적: 웹 애플리케이션과 상관없이 작동.
GenericXmlApplicationContext context = new GenericXmlApplicationContext("classpath:applicationContext.xml");
MyBean bean = context.getBean(MyBean.class);

XmlWebApplicationContext
: WebApplicationContext의 하위 클래스이며, XML 설을 사용하여 웹 애리케이션에 특화 컨텍스트니다.

  • 웹 애플리케이션 환경: ServletContext와 통합되 동작하며, 주로 Spring MVC에서 사.
  • DispatcherServlet과의 연계: Spring MVC의 핵심 구성 요소인 DispatcherServlet이 이 컨스트를 초기화.
  • 웹 관련 리소스 처리: ServletContext를 통해 애플리케이션의 소스(예: 웹 페지, 서블릿 등)와 상작용.
  • XML 설정 파일: web.xml 또는 DispatcherServlet 설에서 명적으로 파일 경를 정의.
<servlet>
    <servlet-name>dispatcher</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/spring/dispatcher-config.xml</param-value>
    </init-param>
</servlet>

XmlWebApplicationContext은 애플리케이션 발에 사되며 GenericXmlApplicationContext와 달리 직 생성하지 는 컨테이너니다.

링 XML 설정

스프링 테이너는 <bean> 저장소에 당하는 xml 설정 파을 참조하여 <bean>의 명주기를 관리하고 러가지 서비스 제공니다. 
따라서 이 설정 일을 정확하 작성하는 것이 요합니다.

서블릿 테이너는 web.xml 파일에 록된 Servlet 클래스의 객체를 생성 때 디폴트 생성만 인식합니다.
따라서 생성로 Servlet 체의 멤버변수를 초기 할 수 없고
블릿은 init() 메소를 재정의하여 멤버변수 초기화합니다.

스프링 테이너 역시 스프링 정 파일에 등록된 클래를 객체 생성할 디폴트 생성를 호출합니다.
<bean> 엘리트에 init-method 속을 추가해 버변수에 대한 초기화 업을 처리합다.

 

에 destroy-method 속으로 객체를 삭제하기 직에 호출될 메소드를 지정할 수 있고
lazy-init 속성으로 <bean> 들을 즉시 로하지 않고 해당 <bean>이 용되는 시점에 성해 메모 관리를 효율적으 할 수 있습니다.
scope 성은 singleton, prototype으로 나는데 <bean> 메모리에 하나만 생할지 아니면 매번 새운 객체를 생성여 반환할지 정는 속성입다.