SSAFY11th-book-study / book-study

0 stars 0 forks source link

[6.3] 팩토리 빈 #61

Open limjongheok opened 4 months ago

limjongheok commented 4 months ago

p.452에서 image 다음 가같이 팩토리 빈을 등록시 MessageFactoryBean을 등록시 MessageFactoryBean이 아닌 Message 타입으로 등록 된다 하는데

public class MessageFactoryBean implements  FactoryBean<Message>{
    String text;

    public void setText(String text){
        this.text = text;
    }
    @Override
    public Message getObject() throws Exception {
        return Message.newMessage(this.text); // 실제 빈으로 사용될 오브젝트를 직접 생성 코드를 이용하기 때문에 복잡한 방식의 오브젝트 생성과 초기화 작업 가능
    }

    @Override
    public Class<? extends Message> getObjectType() {
        return Message.class;
    }

    @Override
    public boolean isSingleton() {
        return false;
    }
}
으로 등록했는데 왜 타입이 getObjectType() 메소드가 돌려주는 타입으로 결정되는지 궁금합니다.
gmelon commented 4 months ago

xml 설정에서 MessageFactoryBean으로 class를 등록했는데 어떻게 실제 컨테이너의 빈은 Message로 등록되는지 내부 동작 방식에 대한 질문인걸까요??

사용법에 대한 이야기라면 저는 FactoryBean.getObjectType()에서 아래와 같이 Message.class를 반환하도록 해주었기 때문에

@Override
public Class<? extends Message> getObjectType() {
    return Message.class;
}

실제 빈이 Message 타입으로 등록되었다고 이해했습니다.