<beans> 루트 엘리먼트
-스프링 컨테이너는 <bean>저장소에 해당하는 XML 설정파일을 참조하며 <bean>의 생명주기를 관리하고 여러가지 서비스를 제공.
-스프링프로젝트 전체에서 가장 중요한 역할 담당
-이 설정 파일을 정확하게 작성하고 관리하는 것이 무엇보다 중요
-스프링 설정파일 이름은 어떤 것을 사용해도 무관하지만, <beans>를 루트엘리먼트로 사용해야함.
-<beans>엘리먼트 시작태그에 네임스페이스를 비롯한 xml스키마 관련정보가 설정됨
-<bean>, <descriptrion>, <alias>, <import> 자식 엘리먼트
<import>엘리먼트
-스프링 설정파일 하나에 우리가 만든 모든 클래스를 <bean>으로 등록하고 관리할 수 도 있지만 <bean>외에도 예외처리, 다국어 처리 등 복잡하고 다양한 설정 필요
-따라서 기능별 여러 XML파일로 나누어 설정하는 것이 더 효율적
-이렇게 분리하여 작성한 설정 파일들을 하나로 통합할 때 사용하는 엘리먼트
예시)
-context-datasource.xml : <beans> DataSource 관련 설정 </bean>
-context-transaction.xml: <beans> Transation 관련 설정 </bean>
applicationContext.xml
<beans>
<import resource="context-datasource.xml"/>
<import resource="context-transaction.xml"/>
</beans>
파일을 가져다 심는 느낌...
<import>태그를 이용해서 여러 스프링 설정 파일을 포함함으로써 한 파일에 작성하는 것 같은 효과를 낼 수 있음
<bean>엘리먼트
스프링 설정 파일에 클래스를 등록하기 위해서는 <bean> 엘리먼트를 사용
id 속성 |
- 객체를 위한 이름을 지정할 때 사용하는 속성 - 컨테이너로부터 <bean> 객체를 요청할 때 사용 - 반드시 스프링 컨테이너가 생성한 개체들 사이에서 유일해야 함 ==> 컨테이너가 각 객체를 식별할 수 있도록 - 생략가능 - 자바의 식별자 작성규칙을 따라 만듦: 낙타표기법(Camel Case) (숫자로 시작X , 공백포함X , 특수기호 사용X) |
name 속성 |
- id와 같은 기능을 하는 속성 - id와 다르게 식별자 작성 규칙을 따르지 않는 문자열도 허용 - 특수기호가 포함된 아이디를 지정할 때는 id 대신 name 속성 사용 - id와 마찬가지로 전체 스프링 파일 내에서 유일해야함 - name보다 id를 선호하는 이유 : 어느정도의 규칙을 따르기 때문에 id를 더 많이 사용 |
class 속성 | - 반드시 써 줘야 함 - 정확한 패키지 경로와 클래스 이름을 지정해 줘야 함 |
<bean>엘리먼트 속성
init-method 속성 |
-스프링 컨테이너는 스프링 설정파일에 등록된 클래스를 객체 생성할 때 디폴트 생성자를 호출함 -객체 생성 후에 멤버변수 초기화 작업이 필요한 경우 사용 |
<bean id="아이디" class="클래스주소" init-method="init메소드 이름"/> |
destroy-method 속성 |
스프링 컨테이너가 객체를 삭제하기 직전에 호출될 임의의 메소드를 지정할 수 있음 |
<bean id="아이디" class="클래스주소" destroy-method="메소드 이름"/> |
lazy-init 속성 |
-컨테이너가 구동되는 시점에 스프링 설정파일에 등록된 <bean>들을 생성하는 즉시로딩 방식으로 동작 - 어떤 <bean>은 자주 사용되지 않음에도 메모리를 많이 차지하여 시스템에 부담을 주는 경우가 종종 발생 - 스프링 컨테이너가 구동되는 시점이 아닌 해당 <bean>이 사용되는 시점에 객체를 생성하도록 하는 기능 - 메모리 관리를 효율적으로 할 수 있음 |
<bean id="아이디" class="클래스주소" lazy-init="true"/> (true로 설정해 놓으면 클라이언트가 요청하는 시점에 생성 |
scope 속성 |
- 하나만 생성돼도 상관없는 객체가 존재 - 클래스로부터 객체를 생성하는 쪽에서 싱글톤 객체로 생성하는 방향이 가장 바람직 - scope 속성이 객체를 싱글톤으로 생성해주는 기능 제공 |
<bean id="아이디" class="클래스주소" scope="singleton"/> (scope속성값은 기본이 싱글톤, scope가 없을 경우 자동으로 싱글톤) <bean id="아이디" class="클래스주소" scope="prototype"/> (prototype으로 지정할 경우 스프링 컨테이너는 해당 <bean>이 요청될 때마다 매번 새로운 객체를 생성하여 반환) |
'건승하고있어요 > Spring framework' 카테고리의 다른 글
[Spring] 스프링1일차 - 의존성관리/Setter인젝션(Setter Injection) (0) | 2018.02.08 |
---|---|
[Spring] 스프링1일차 - 의존성관리/생성자 인젝션(Constructor Injection) (2) | 2018.02.08 |
[Spring] 스프링1일차 - 스프링 컨테이너 및 설정파일 (2) | 2018.02.08 |
[Spring] 스프링1일차 - 프레임워크 개요 (4) | 2018.02.08 |
[Spring] 스프링1일차 - 환경설정하기 (5) | 2018.02.08 |