FactoryBean和BeanFactory的区别

区别:
--------------------区别-------------
1: BeanFactory是容器的顶级父接口,定义了bean工厂的基础特性。
例如,根据名称去容器中获取bean的实例,BeanFacotry主要是用来管理Bean
的容器

2: FactoryBean
FactoryBean的本质其实就是一个bean。但是它不是普通的bean.
因为他生成的bean没有注入到spring容器中,所有它生成的bean
不能像@service或者@dao等注解标记的类,注入到任意的地方。
,实现这个接口时,spring容器在初始化时会把实现这个接口的bean
给取出来,然后使用getObject的方法来生成我们想要的bean
如果想要获取FactoryBean的实例,那么就需要在其前面加上&
就可以获取FactoryBean的实例。

public class User {

	private String name;
	private String sex;

	public User() {
	}

	public User(String name, String sex) {
		this.name = name;
		this.sex = sex;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getSex() {
		return sex;
	}

	public void setSex(String sex) {
		this.sex = sex;
	}


}
@Component
public class UserFactoryBean implements FactoryBean<User> {

	 //获取Bean的实例
	@Override
	public User getObject() throws Exception {
		return new User();
	}

	@Override
	public Class<?> getObjectType() {
		return User.class;
	}
}
public static void main(String[] args) {
// 将当前配置类标识的注解注入到容器中
ApplicationContext applicationContext =
    new AnnotationConfigApplicationContext(Entrance.class);
	 
// 获取指定的bean
WelcomeController welcomeController = (WelcomeController) 
    applicationContext.getBean("welcomeController");
welcomeController.handleRequest();

// 通过beanName获取的实例,是一个FactoryBean的实例 这个bean不受容器的管理    
User user = (User)applicationContext.getBean("userFactoryBean");
System.out.println(userFactoryBean1);

 // 通过&beanName获取的实例,获取的bean 这个bean是被容器管理的。 
UserFactoryBean userFactoryBean = (UserFactoryBean) applicationContext.getBean(BeanFactory.FACTORY_BEAN_PREFIX + "userFactoryBean");
System.out.println("userFactoryBean===>" + userFactoryBean);
}

FactoryBean 返回的bean不受spring管理 需要手动的添加。
应用场景:
mapper的 暂时未验证

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值