Spring - 빈 객체 생성 및 생명주기

2020. 8. 16. 18:35Java/Spring

반응형

Spring 에서는 사용할 Bean 객체를 bean configuration file(beans.xml)에 정의를 하고 필요할 때 객체를 가져와 사용하는 방법을 이용한다.

 

1. beans.xml에 정의 된 bean 태그의 속성

 

- class : 객체를 생성하기 위해 사용할 클래스를 지정한다.

- id : Bean 객체를 가져오기 위해 사용하는 이름을 지정한다.

- lazy-init : 싱글톤인 경우 xml로딩할 때 객체 생성 여부를 설정한다.
             true : xml
로딩 시 객체를 생성하지 않고 객체를 가져올 때 생성한다.

 -scope : 객체의 범위를 설정한다.
          - singleton :
객체를 하나만 생성해서 사용한다.
          - prototype :
객체를 가져올 때 마다 객체를 생성한다.

 

사용 예시

 

 

2. bean 객체의 생명주기

   - 생성

    - scope: Singleton인 경우 xml 파일을 로딩 할 때 객체가 생성된다.

    - scope: Singleton이고 lazy-init 속성이 true일 경우 getBean 메서드를 사용할 때 객체가 생성된다.

    - scope: prototype 일 경우 getBean 메서드를 사용할 때 객체가 생된다.

 

   - 소멸

    - loC 컨테이너가 종료 때 객체가 소멸된다.

 

   - 객체 생성 및 종료시 특정 메서드 호출

    - 객체가 생성되면 가장 먼저 생성자가 호출된다.

 

<bean> 내부에 정의

    - init-method : 생성자 호출 이후 자동으로 호출된다.

    - destroy-method : 객체가 소멸될 때 자동으로 호출된다.

<bean id="test2" class='kr.co.softcampus.beans.TestBean' lazy-init="true" init-method="test1"/>

TestBean에서 생성자 호출 후 test1 메소드를 호출한다.

 

 

<beans> 내부에 정의

    - default-init-method : init-method를 설정하지 않은 경우 자동으로 호출된다.

    - default-destroy-method : destroy-method를 설정하지 않은 경우 자동으로 호출된다.

<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"
                        default-init-method ="test1"
                        >

bean 태그 내에 init-method 없을 경우 test1 메소드를 호출한다.

반응형