빈 팩토리...이름 그 자체로 팩토리 디자인 패턴을 구현한 것이다.
빈 팩토리는 빈을 생성하고 분배하는 책임을 지는 클래스로서 단일 유형의 객체만 분배하는것과 달리 범용적 목적의 팩토리로서 다양한 유형의 빈을 생성하고 분배가능하다.
빈팩토리는 Application 내의 많은 객체에 대해 알기때문에
객체들의 인스턴스화할때 협업하는 객체 간의 연관관계를 생성시키는 것이 가능하다 (빈 자신과 빈의 클라이언트로부터 설정이라는 작업을 없애준다.)
즉, 빈팩토리가 객체를 배분하는 시점에서 객체들이 완전히 설정되 있는 상태이며 협업하는 객체들끼리 인식 하고 곧바로 사용할수 있는 상태인 것이다.
게다가 빈팩토리는 커스텀 초기화메소드(initialization method) 와 소멸메소드(destruction method)를 호출함으로써 생명주기에 개입할수도 있다.
org.springframework.beans.factory.xml.XmlBeanFactory
- xml 파일에 기술되어 있는 정의를 바탕으로 빈을 로딩
(파일 생성을 위해 FileSystemResource 를 사용 )
FileSystemResource - org.springframework.core.op 패키지 참조
ex )
BeanFacoty factory=new XmlBeanFactory(new
FileSystemResource("beans.xml"));
주의할점) 빈 팩토리가 로딩시 인스턴스화 하는것이 아니다. 빈자체가 필요하게 되기 전까지 인스턴스화하지 않는다는 의미이다.
빈을 얻어오는 방법
ex) MyBean myBean=(MyBean)factory.getBean("myBean");
getBean 호출시 팩토리는 의존성주입(DI)을 이용해 빈을 인스턴스화하고 빈의 특성을 설정하기 시작한다. 이로써 스프링 컨테이너 안에서의 빈의 일생이 시작된다