springBean

spring小结3:Spring三种实例化Bean的方式

接上回《 spring管理bean原理【山寨版】
       本次主要复习spring实例化bean的方式,spring3共提供了三种实例化bean的方式分别为:构造器实例化  静态工厂实例化   动态工厂实例化,下面一一详解:

公共使用的实体



方式一:构造器实例化
xml配置

  测试



以上就是构造器实例化方式,简单而方便便,我的比较喜欢使用此法,根据不一样的参数配置,可达到不一样的效果的属性初始化,真心不错!

方式二:静态工厂
静态工厂实例化方法须要另外创建一个工厂类

本工厂类提供2个方法,分别对应带参,无参构造器!
xml配置

测试

方式三:动态工厂
跟静态工厂同样,须要一个工厂类,不一样的是,动态工厂中的方法为非静态的

xml文件

测试:


【注意:】 根据上面的xml配置,细心的朋友会发现静态工厂xml配置方式也能够跟动态工厂那样配置如:



通过测试,发现此法不妥,会报:
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'personStaticFactoryWithName' defined in class path resource [beans-instance.xml]: No matching factory method found: factory bean 'staticFactory'; factory method 'creatPersonInstace()'. Check that a method with the specified name and arguments exists and that it is non-static.异常,至于为何会这样,具体细节目前小飞我还没有清楚,应该是跟静态工厂类中静态方法属于整个类有关吧!

总结下(抄的,以为挺好的!拿来分享下)

方式一:经过bean的缺省构造函数建立,当各个bean的业务逻辑相互比较独立的时候或者和外界关联较少的时候可使用。spring

方式二:利用静态factory方法建立,能够统一管理各个bean的建立,如各个bean在建立以前须要相同的初始化处理,则可用这个factory方法险进行统一的处理等等。框架

方式三:利用实例化factory方法建立,即将factory方法也做为了业务bean来控制,以为1可用于集成其余框架的bean建立管理方法,2可以使bean和factory的角色互换。函数

相关文章
相关标签/搜索