Spring中bean的实例化方式

在Spring中,bean的实例化常用的有四种方式:

1,使用bean的构造方法实例化bean;(如果直接在配置文件中配置bean的id和class,那么要求这个bean必须有默认的无参的构造方法)

2,静态工厂方法:

<beanid="somebean" class ="spring.day1.create.SomeBeanFactory"  factory-method = "getBean" />

注意:在class里面配置的是工厂的类型,但是在得bean的时候,用的是bean的类型;

静态工厂方法的实例化过程;

1,读入配置文件:

2,解析每一个bean的元素;

3,解析到id和class属性;

如果bean元素上面有factory-method属性,得到方法名称

4,使用反射得到对象(Class.forName("SomeBeanFactory").getMethod("getBean").invoke(null,null)) ->SomeBean

5,把得到的对象实例和id放到容器中;

3,实例工厂方法:

<!--实例工厂方法

factory-method:工厂方法 factory-bean: -->

<bean id="factory" class="spring.day1.create.SomeBeanFactory" />

<bean id ="somebean" class = "spring.day1.create.SomeBean" factory-bean="factory" factory-method = "getBean" />

4,FactoryBean:代表工厂类接口,在Spring中,只要一个类实现了FactoryBean接口,那么这个类自动的被Spring识别为一个工厂类。

1,如果一个bean要作为一个工厂类存在,那么只需要实现FactoryBean接口;

2,在Spring配置文件中,只需要配置这个工厂类型,但得到的是工厂生产的bean;

3,Spring处理FactoryBean的流程:

1,诗篇配置文件;

2,解析每一个bean元素;

3,解析到id和class属性;

4,使用反射得到对象;

得到的是工厂的实例,如果这个实例是实现了FactoryBean接口,Spring把该bean转型成FactoryBean;

1,通过FactoryBean上面的getObject()得到真正的实例对象;

2,通过getObjectType()得到对象的类型;

 5,把得到的对象实例和id放到容器中;

1,isSingleton:为true的话,得到的对象只有一个实例,如果为false的话,拿一次对象,调用一个getObject()方法;

在Spring里面提供了一些特殊作用的接口,bean实现了这些接口,bean就具有这个接口所提供的功能。


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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值