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(); } }