코린이의 기술 블로그
스프링 컨테이너 본문
스프링 컨테이너의 종류 ?
스프링에서는 BeanFactory와 이를 상속한 ApplicationContext 두 가지 유형의 컨테이너를 제공
먼저 BeanFactory는 스프링 설정 파일에 등록된 객체를 생성하고 관리하는 가장 기본적인 컨테이너 기능만 제공한다. 그리고 컨테이너가 구동될 때 객체를 생성하는 것이 아니라, 크라이언트의 요청에 의해서만 객체가 생성되는 지연 로딩 방식을 사용합니다.
ApplicationContext는 BeanFactory가 제공하는 객체 관리 기능 외에도 트랜잭션 관리나 메시지 기반의
다국어 처리 등 다양한 기능을 지원합니다.
GenericXmlApplicationContext ? 파일 시스템이나 클래스 경로에 XML 설정 파일을 로딩하여 구동하는 컨테이너
XmlWebApplicationContext ? 웹 기반의 스프링 애플리케이션을 개발할 때 사용하는 컨테이너
스프링 XML 설정 ?
(1)<beans> 루트 엘리먼트 ?
XML 설정 파일 참조, <bean>생명 주기 담당하며, 스프링 컨테이너는 저장소에 해당하는 XML 설정 파일을 참조하여 의 생명 주기를 관리하고 여러 가지 서비스를 제공합니다.
스프링 설정 파일 이름은 무엇을 이용하든 상관없지만, 루트 엘리먼트로 사용해야 하며, 엘리먼트 시작 태그에 네임스페이스를 비롯한 XML스키마 관련 정보가 설정.
beans 네임스페이스가 기본 네임스페이스로 선언되어있었으며, spring-beans.xsd 스키마 문서가 schemaLocaion 등록되어 있습니다.
(2)<import> 엘리먼트 ?
스프링 설정 파일이 길어지고, 관리가 어려워 지는 단점이 있으므로 기능별 XML로 나누어서 설정합니다.
분리하여 작성한 설정 파일들을 하나로 통합할 때 <import> 를 사용합니다. 여러 스프링 설정 파일을 하나로 포함함으로써 한 파일에 작성한 효과를 볼 수 있습니다.
(3) <bean> 엘리먼트 ?
id와 class 속성 사용, id 속성은 생략 가능하지만, class는 필수 입니다.
- init-method ? 클래스 객체 생성 할때 디폴트 생성자 호출, 멤버변수 초기화 작업이 필요하다면, Servlet의 init() 메소드 필요
- destroy-method ? 스프링 컨테이너가 객체 삭제 직전에 호출될 임의의 메서드 지정
- lazy-init ? lazy-init(true) 로 설정하면, <bean> 을 미리 생성하지 않고 클라이언트가 요청하는 시점에 생성
- scope ? 하나의 객체만 생성하도록 제어 해야하는데 사용하는 것이 싱글톤 패턴입니다. scpoe 속성 값은 기본이 싱글톤.
'Java Web' 카테고리의 다른 글
의존 관계 / 생성자 인젝션 / Setter 인젝션 (0) | 2021.11.10 |
---|---|
DI(Dependency Injection) (0) | 2021.11.09 |
IoC(Inversion of Control) 컨테이너 (0) | 2021.11.07 |
스프링 프레임워크의 특징 (0) | 2021.11.06 |
스프링 프레임워크 세팅 (0) | 2021.11.05 |