1. 스프링 IoC 컨테이너(Spring Inversion of Control Container)

- 스프링은 객체를 관리하는 컨테이너를 제공

- 컨테이너에 객체를 담아 두고 필요할 때 가져와서 사용

- 컨테이너 역할을 수행하는 인터페이스, BeanFactory와 ApplicationContext 





1.1. BeanFactory 인터페이스 (org.springframework.beans.factory.BeanFactory)

- 빈 객체를 관리, 빈 객체관의 의존 관계를 설정

- 구현 클래스 : org.springframework.beans.factory.xml.XmlBeanFactory (외부 자원으로부터 설정 정보를 읽어 와 빈 객체를 생성)

- org.springframework.core.io.Resource 인터페이스를 사용하여 다양한 종류의 자원을 동일한 방식으로 표현

- 특정 Resource로부터 설정 정보를 읽어와 XmlBeanFactory 객체를 생성한 뒤 getBean() 메서드를 이용하여 빈을 가져와 사용


- BeanFactory 객체 생성

Resource resource = new FileSystemResource("xml 설정파일 경로포함이름");

XmlBeanFactory factory = new XmlBeanFactory(resource);

클래스명 abc = (클래스명) factory.getBean("xml 설정파일내에 클래스 bean 객체 id명");


- Resource 구현 클래스

 클래스

 설명 

 org.springframework.core.io.FileSystemResource 

 파일 시스템의 특정 파일로 부터 정보를 읽어 온다. 

 org.springframework.core.io.InputStreamResource 

 InputStream으로부터 정보를 읽어 온다. 

 org.springframework.core.io.ClassPathResource 

 클래스패스에 있는 자원으로부터 정보를 읽어 온다. 

 org.springframework.core.io.UrlResource 

 특정 URL로부터 정보를 읽어 온다. 

 org.springframework.web.context.support.ServletContextResource

 웹 어플리케이션의 루트 디렉터리를 기준으로 지정한 경로에 위치한 자원으로부터 정보를 읽어 온다. 


1.2. ApplicationContext 인터페이스 (org.springframework.context.ApplicationContext)

- BeanFactory 인터페이스를 상속받은 하위 인터페이스

빈 관리기능 외에 추가기능 제공(빈 객체 라이프 사이클, 파일과 같은 자원 처리 추상화, 메시지 지원 및 국제화 지원, 이벤트 지원, XML 스키마 확장을 통한 편리한 설정)

- 구현 클래스 : org.springframework.context.support.ClassPathXmlApplicationContext (클래스패스에 위치한 XML 파일로부터 설정 정보를 로딩)

- 구현 클래스 : org.springframework.context.support.FileSystemXmlApplicationContext (파일 시스템에 위치한 XML 파일로부터 설정 정보를 로딩)

- 구현 클래스 : org.springframework.web.context.support.XmlWebApplicationContext (웹 어플리케이션에 위치한 XML 파일로부터 설정 정보를 로딩)


- ApplicationContext 객체 생성

ApplicationContext context = new ClassPathXmlApplicationContext("xml 설정파일 경로포함이름");

클래스명 abc = (클래스명) context.getBean("xml 설정파일내에 클래스 bean 객체 id명");


ApplicationContext context = new ClassPathXmlApplicationContext("xml 설정파일 경로포함이름", "xml 설정파일 경로포함이름", . . .);

클래스명 abc = (클래스명) context.getBean("xml 설정파일내에 클래스 bean 객체 id명");


1.3. WebApplicationContext 인터페이스 (org.springframework.web.context.webApplicationContext)

- 웹 어플리케이션을 위한 ApplicationContext

- 하나의 웹 어플리케이션 마다 한개 이상의 WebApplicationContext를 가질 수 있음

- 개발자가 직접 XmlWebApplicationContext 객체를 생성하는 경우는 드뭄

- 구현 클래스 : ApplicationContext 와 같음

+ Recent posts