BeanFactory是用来创建bean实例
1:获取对象时默认调用Bean Factory的getObject()方法返回bean的实例
2:如果想获取创建bean的BeanFactory在获取的id前面加上‘&’
下面时具体的代码
在BeanFactory中添加Color实例实现FactoryBean接口
import com.annotation.entities.Color;
import org.springframework.beans.factory.FactoryBean;
public class ColorFactoryBean implements FactoryBean<Color> {
//该方法返回值是需要创建的bean
@Override
public Color getObject() throws Exception {
System.out.println("ColorFactoryBean...getObject");
return new Color();
}
//创建的bean的类型
@Override
public Class<?> getObjectType() {
return Color.class;
}
//添加的组建是否是单例的
@Override
public boolean isSingleton() {
return false;
}
}
测试方法:
@Test
public void testFactoryBean(){
setApplicationContext2();
//返回的是ColorFactoryBean创建的对象
Object colorFactoryBean = applicationContext.getBean("colorFactoryBean");
System.out.println(colorFactoryBean.getClass());//class com.annotation.entities.Color
//返回的是创建Bean的对象
Object bean = applicationContext.getBean("&colorFactoryBean");
System.out.println(bean.getClass());//class com.annotation.importannotation.factorybean.ColorFactoryBean
}