팩토리 메서드를 이용한 빈 생성
- 생성하려는 빈이 public 생성자가 없는 경우 팩토리 메서드를 이용해서 생성된 빈을 미리 연결한다.
- 생성자가 공연을 보여줄 무대는 하나 뿐이기 때문에 static으로 선언해야 한다.
- factory-method는 싱글톤 클래스가 아니더라도 정적 메서드로 객체를 생성하는 경우 사용가능
<bean id="stage" class="wiring.bean.Stage" factory-method="getInstance"/>
public class Stage {
private static Stage stage = new Stage();
public static Stage getInstance() {
return stage;
}
}
싱글톤
싱글톤과 빈의 유효범위
- 컨테이너는 getBean() 메서드를 호출해서 빈을 가져오거나 빈을 와이어링 할 때 기본적으로 빈은 하나만 생성해서 항상 같은 인스턴스를 준다.
이름 |
유효범위 |
singleton |
스프링 컨터이너당 하나의 인스턴스. 기본값. |
prototype |
사용할 때마다 새 인스턴스 생성 |
request |
HTTP 요청당 하나의 인스턴스 . Spring MVC 같은 웹 환경에서만 유효 |
session |
HTTP 세션당 하나의 인스턴스. Spring MVC 같은 웹 환경에서만 유효 |
global-session |
전역 HTTP 세션당 하나의 인스턴스. 포클릿 환경에서만 유효 |
싱글톤 패턴
- 클래스의 인스턴스가 딱 1개만 생성되는 것을 보장하는 디자인 패턴이다.
- 해당되는 인스턴스에 대해서 statiac을 통해 최초 1번만 메모리를 할당시키며 이후 해당 인스턴스에 대한 호출이 생길 때 마다 최초로 생긴 인스턴스를 사용한다.
- 그래서 private를 사용해 객체 인스턴스를 2개 이상 새성하지 못하도록 막는다.
싱글톤 패턴의 사용하는 이유