더북(TheBook)

4.6.2 FactoryBean에 직접 접근하기

스프링이 FactoryBean을 참조하는 빈에 FactoryBean이 생성하는 객체를 자동으로 주입해주기 때문에 일부 독자는 FactoryBean 자체에 직접 접근할 수는 없는지 궁금할 것입니다. 이 질문에 대한 대답은 ‘가능하다’입니다.

FactoryBean에 접근하는 방법은 간단합니다. 다음 예제 코드와 같이 빈 이름 앞에 & 문자를 붙여 getBean() 메서드를 호출하면 됩니다.

예제 4-29 FactoryBean 자체에 접근하기([[factory-bean]] AccessingFactoryBeans.java)

package com.apress.prospring5.ch4;

import org.springframework.context.support.GenericXmlApplicationContext;

import java.security.MessageDigest;

public class AccessingFactoryBeans {

    public static void main(String... args) {
        GenericXmlApplicationContext ctx = new GenericXmlApplicationContext();
        ctx.load("classpath:spring/app-context-xml.xml");
        ctx.refresh();
        ctx.getBean("shaDigest", MessageDigest.class);

        MessageDigestFactoryBean factoryBean =
                (MessageDigestFactoryBean) ctx.getBean("&shaDigest");
        try {
            MessageDigest shaDigest = factoryBean.getObject();
            System.out.println(shaDigest.digest("Hello world".getBytes()));
        } catch (Exception ex) {
            ex.printStackTrace();
        }
        ctx.close();
    }
}
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.