일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 여름성경학교
- 50mm
- af-s 18-35
- nikkor
- 렌즈
- 하늘풍경
- Photo
- 85mm f/1.8G
- camera
- spring
- 50mm f/1.8G
- 사진
- 니콘
- 85mm 1.8g
- 꽃
- 푸초
- daily
- 18-35mm
- 푸른초장교회
- 경치
- 일상
- AF-S NIKKOR 85mm f/1.8G
- AF-S NIKKOR 18-35mm f/3.5-4.5G ED
- D750
- 출사
- Nikon
- AF-S 18-35mm
- AF-S NIKKOR 50mm f/1.8G
- 풍경
- 카메라
- Today
- Total
병갈이 블록
1-02.팩토리 방식의 스프링 빈 설정 본문
1. static 메서드를 사용해서 객체를 생성할 경우.
- 자신의 객체를 반환하는 static메서드를 만든다.
class Test{
public static Test instance(){
return new Test();
}
}
위 클래스는 아래와 같이 객체를 얻는다.
Test firstTest = Test.instance();
- XML에 빈 객체 등록 시 <bean>태그에 factory-method 속성을 이용하여 인스턴스를 생성하는 메서드를 추가한다.
(위 클래스의 경우 <bean id="..."....... factory-method="instance"> )
- 생성자 인수 및 프로퍼티 매개변수가 필요하다면 빈 등록때와 같이 하면 된다.
** 무슨 말이냐 하면, A클래스를 빈에 등록시킨다고 할 때, A클래스의 인스턴스를 어떻게 얻을 것인가 하는 것이다.
** 일반적인 생성자나 프로퍼티로 등록을 하지 않고 A클래스 내부에서 인스턴스를 반환하는 static매서드를
** 등록한다.
2. FactoryBean 인터페이스를 이용하여 객체를 생성.
- FactoryBean<T> 인터페이스의 메서드
T getObject() : 클래스 객체를 반환하는 메서드. 이 메서드에서 반환된 객체가 빈 객체로 사용된다.
Class<?> getObjectType() : 객체의 타입 리턴.
boolean isSingleton() : 객체가 매번 동일한 객체를 반환하는지 여부.
class TestSecondBean implements FactoryBean<TestSecond>{
private TestSecond testsec;
... //초기화에 필요한 맴버변수 및 프로퍼티.
poublic TestSecond getObject() throws Exception{
if( this.testsec != null ){
return this.testsec; //이미 객체가 있으면 기존의 객체를 반환.
}
..... // 기존에 생성된 객체가 없을시 수행할 각종 초기화 작업들.
return this.testsec; // 새로 생성된 객체를 반환.
}
}
- XML에 등록은 다른 빈을 등록할때와 같다. 필요한 초기화 작업은 프로퍼티에 값을 지정하여 설정한다.
- FactoryBean 인터페이스를 구현한 클래스는 스프링이 getObject에서 반환된 객체를 빈 객체로 사용한다.
- java코드 설정으로 사용할 때 위 객체를 다른 메서드에서 사용하려면, 단순히 메서드 내부에서 객체를 생성하는 행위로
끝나는 것이 아니라 상속받아 재 구현한 .getObject()메서드를 호출해서 객체를 구해야 한다.
'IT(Old) > Spring 공부 기록' 카테고리의 다른 글
Spring DB접속 도전기!! (0) | 2017.07.26 |
---|---|
2-02. 스프링 MVC 간략 정리해보기. (0) | 2017.07.23 |
1-03. 애노테이션 의존 자동 연결 (0) | 2017.07.22 |
1-01.스프링...기본적인 DI설정 (0) | 2017.07.20 |
2-01. Spring 기본 (0) | 2017.07.20 |