인터넷 강의를 듣고 공부한 내용을 포스팅합니다.
'윤재성의 스프링 프레임워크 개발자를 위한 실습을 통한 입문 과정' 이란 강의를 듣고 있습니다.
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
'Spring' 카테고리의 다른 글
DI(Dependency Injection) 생성자를 통한 주입 (0) | 2021.07.17 |
---|---|
빈 객체의 생명주기, BeanPostProcessor (0) | 2021.07.16 |
IOC(Inversion Of Control) 컨테이너 (0) | 2021.07.14 |
IOC(Inversion Of Control)제어의 역전 (0) | 2021.07.14 |
자바 다형성 사용하기, 스프링프레임워크 사용하기 (0) | 2021.07.13 |