FactoryBean和BeanFactory的差别
- FactoryBean是创建Bean的一种方式,帮助实现复杂的初始化逻辑;(在难以创建Bean对象的时候可以使用)
public class UserFactoryBean implements FactoryBean<User> {
@Override
public User getObject() throws Exception {
User user = new User();
user.setAge(12);
return user;
}
@Override
public Class<?> getObjectType() {
return User.class;
}
@Override
public boolean isSingleton() {
return true;
}
}
<bean id="userFactoryBean" class="edu.ahau.thinking.in.spring.ioc.overview.factory.UserFactoryBean" />
测试:
public class FactoryBeanTest {
public static void main(String[] args) {
ApplicationContext context = new ClassPathXmlApplicationContext("classpath:/META-INF/dependency-injection-context.xml");
System.out.println(context.getBean("userFactoryBean", User.class));
}
}
其中,getObject()
获取到Bean对象,getObjectType
指定返回的bean类型,如果返回的是多个类型一样的Bean,就需要通过isSingleton()
指定是否单例.
- BeanFactory是IoC底层容器,对Bean进行管理管理,可以通过BeanFactory#getBean()获取到Bean。