【Spring註解】FactoryBean註冊
阿新 • • 發佈:2018-12-31
5.FactoryBean
自定義Cat的工廠物件 CatFactoryBean
/**
* @author GaoYuzhe
* @date 2018/3/13.
*/
public class CatFactoryBean implements FactoryBean<Cat> {
/**
* 返回一個Car物件,當前物件會加入到容器中
* @return
* @throws Exception
*/
public Cat getObject() throws Exception {
System.out.println("CatFactoryBean...getObject..." );
return new Cat();
}
/**
* 返回型別
* @return
*/
public Class<?> getObjectType() {
return Cat.class;
}
/**
* 是否為單例
* @return
*/
public boolean isSingleton() {
return false;
}
}
配置類
**
* @author GaoYuzhe
* @date 2018/3/13.
*/
@Configuration
public class FactoryConfig {
@Bean
public CatFactoryBean catFactoryBean(){
return new CatFactoryBean();
}
}
測試類
**
* @author GaoYuzhe
* @date 2018/3/13.
*/
public class FactoryConfigTest {
@Test
public void catFactoryBean() {
AnnotationConfigApplicationContext annotationConfigApplicationContext = new AnnotationConfigApplicationContext(FactoryConfig.class);
//獲取工廠建立的物件
Object catFactoryBean = annotationConfigApplicationContext.getBean("catFactoryBean");
System.out.println("工廠建立的物件:"+catFactoryBean.getClass());
//beanName前加'&',獲取工廠本身
Object catFactory = annotationConfigApplicationContext.getBean("&catFactoryBean");
System.out.println("工廠物件本身:"+catFactory.getClass());
}
}
執行結果