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());
}
}
运行结果