接上回《
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的角色互换。函数