Bean : 관리되어지는 객체, 스프링 프레임워크에서 관리하는 객체
파일 생성
bean 객체 만들기
name 또는 id , name은 특수문자까지도 올 수 있다.
보통은 id를 더 많이 쓴다.
TVUser
package polymorphism;
import org.springframework.context.support.AbstractApplicationContext;
import org.springframework.context.support.GenericXmlApplicationContext;
public class TVUser {
static BeanFactory factory = new BeanFactory();
public static void main(String[] args) {
// xml 파일을 읽어서 객체를 만들어라
AbstractApplicationContext factory
= new GenericXmlApplicationContext("applicationContext.xml");
TV tv = (TV)factory.getBean("tv");
tv.powerOn();
tv.powerOff();
tv.volumeUp();
tv.volumeDown();
// Spring container를 종료한다
factory.close();
}
}
스프링에서 configuration 파일을 이용하여 어떻게 객체를 꺼내고 사용하는지 알아보자.
초기화 메서드
종료 메서드
lazy-init 설정 전
설정
설정 후에는 콘솔에 아무것도 입력되지 않는다.
package polymorphism;
import org.springframework.context.support.AbstractApplicationContext;
import org.springframework.context.support.GenericXmlApplicationContext;
public class TVUser {
static BeanFactory factory = new BeanFactory();
public static void main(String[] args) {
/*
// 객체가 각각 생긴다(총 3개)
TV tv0 = new SamsungTV();
TV tv1 = new SamsungTV();
TV tv2 = new SamsungTV();
*/
/*
// 객체가 1개 생긴다
TV tv0 = new SamsungTV();
TV tv1 = tv0;
TV tv2 = tv1;
*/
AbstractApplicationContext factory =
new GenericXmlApplicationContext("applicationContext.xml");
/* Spring은 bean을 생성할 때 기본적으로 Singleton Pattern을 사용한다
* 즉, 1개만 생성해서 다음부터는 같은 bean을 리턴한다
*/
TV tv0 = (TV)factory.getBean("tv");
TV tv1 = (TV)factory.getBean("tv");
TV tv2 = (TV)factory.getBean("tv");
System.out.println(tv0);
System.out.println(tv1);
System.out.println(tv2);
factory.close(); // Spring 컨테이너를 종료한다
}
}
prototype 설정 후 객체가 3개씩 만들어지는 것을 확인할 수 있다.