본문 바로가기

Spring

빈 객체 생성하기

인터넷 강의를 듣고 공부한 내용을 포스팅합니다.

'윤재성의 스프링 프레임워크 개발자를 위한 실습을 통한 입문 과정' 이란 강의를 듣고 있습니다.

 

Spring Bean 객체 생성

전 포스팅에서 작성했던 우리가 정해주어야 하는 데이터 MetaData 라고 언급했던 부분에서 xml파일을 이야기 했었는데 그곳에 사용할 객체를 정의를 하고 필요할 때 가져와 사용합니다. (XML에 bean태그를 이용해 bean객체 정의)

 

Bean 태그의 기본속성

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

id : Bean객체를 불러오기 위해 사용

lazy-init : 싱글톤(한번 생성한 객체를 두번 생성하지 않음)일 때 xml로딩시에 객체 생성여부를 결정 (true 하면 xml로딩시에 객체를 생성하지 않고 호출할 때 생성)

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

 

 

실습

생짜

<!-- xml로딩할 때 자동으로 객체가 생성된다. -->
<!-- id가 없어서 객체의 주소값을 받아 사용 불가능. 추후 사용방법 배울 예정 -->
<bean class="kr.co.softcampus.beans.TestBean"/>

 

id속성 추가

<!-- xml을 로딩할 때 자동으로 객체가 생성된다. -->
<!-- id속성에 이름을 부여하면 getBean 메서드를 통해 객체의 주소값을 받아 사용할 수 있다. -->
<!-- 생성된 객체는 더 이상 생성되지 않는다. singleton -->
<bean id="test1" class="kr.co.softcampus.beans.TestBean"/>

 

lazy-init 속성 추가

<!-- lazy-init에 true를 넣어주면 xml로딩시 객체생성 no -->
<!-- getBean 메소드를 호출 할 때 객체가 생성되며 singleton이기 때문에 객체는 하나만 생성된다. -->
<bean id="test2" class="kr.co.softcampus.beans.TestBean" lazy-init="true"/>

 

 scope 속성 추가

<!-- scope : prototype으로 하면 xml 로딩할 때 객체가 생성되지 않는다. -->
<!-- getBean할 때마다 새로운 객체를 생성한다. -->
<bean id="test3" class="kr.co.softcampus.beans.TestBean" scope="prototype"/>

scope : prototype으로 하면 lazy-init 이 자동 true 됨 로딩시에 객체 생성 X