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());
}
}
運行結果