动态工厂 Bean和静态工厂Bean

原创 2017年07月26日 23:54:33

动态工厂 Bean
有些时候,项目中需要通过工厂类来创建 Bean 实例,而不能像前面例子中似的,直接由 Spring 容器来装配 Bean 实例。使用工厂模式创建 Bean 实例,就会使工厂类与要创建的Bean 类耦合到一起。

(1 )将动态工厂 Bean 作为普通 Bean 使用
将动态工厂 Bean 作为普通 Bean 来使用是指,在配置文件中注册过动态工厂 Bean 后,测试类直接通过 getBean()获取到工厂对象,再由工厂对象调用其相应方法创建相应的目标对象。配置文件中无需注册目标对象的 Bean。因为目标对象的创建不由 Spring 容器来管理。
举例:
这里写图片描述

这里写图片描述

这里写图片描述

但,这样做的缺点是,不仅工厂类与目标类耦合到了一起,测试类与工厂类也耦合到了一起。

(2 )使用 Spring 的动态工厂 Bean
Spring 对于使用动态工厂来创建的 Bean,有专门的属性定义。factory-bean 指定相应的工厂 Bean,由 factory-method 指定创建所用方法。此时配置文件中至少会有两个 Bean 的定义:工厂类的 Bean,与工厂类所要创建的目标类 Bean。而测试类中不再需要获取工厂 Bean对象了,可以直接获取目标 Bean 对象。实现测试类与工厂类间的解耦。
这里写图片描述

这里写图片描述

静态工厂 Bean
使用工厂模式中的静态工厂来创建实例 Bean。
此时需要注意,静态工厂无需工厂实例,所以不再需要定义静态工厂。而对于工厂所要创建的 Bean,其不是由自己的类创建的,所以无需指定自己的类。但其是由工厂类创建的,所以需要指定所用工厂类。故 class 属性指定的是工厂类而非自己的类。当然,还需要通过 factory-method 属性指定工厂方法。
举例:
这里写图片描述

这里写图片描述

版权声明:本文为博主原创,转载请注明出处(http://blog.csdn.net/jdjh1024).

spring的静态工厂和实例工厂方法

直接上代码吧,好理解 package com.norelax.www.factory; /** * 新闻实体类 * * @author wusong * @create 2017-05-2...
  • shidawusong
  • shidawusong
  • 2017年05月29日 11:10
  • 454

Spring Bean工厂创建Bean实例的方法之使用静态工厂类

定义接口: package Bean.staticFactoryBean;public interface Axe ...{   public String chop();}package Bean....
  • daryl715
  • daryl715
  • 2007年03月23日 17:21
  • 3577

转:Spring使用静态工厂方法创建Bean

如何在Spring中不再使用Spring创建Bean实例,而是把Bean创建过程转移到开发者手中。 1. 使用静态工厂方法创建Bean     使用静态工厂方法创建Bean实例时,class属...
  • u012110719
  • u012110719
  • 2015年08月18日 16:03
  • 1587

Spring使用静态工厂方法创建Bean

1. 使用静态工厂方法创建Bean     使用静态工厂方法创建Bean实例时,class属性也必须指定,但此时class属性并不是指定Bean实例的实现类,而是静态工厂类。因为Spring需要知道是...
  • u010889616
  • u010889616
  • 2016年08月21日 17:45
  • 1065

spring学习小结7_使用工厂方法来配置bean:静态工厂方法和实例工厂方法

使用工厂方法来配置bean:静态工厂方法和实例工厂方法 静态工厂方法:将对象创建的过程封装到另外一个类的静态方法中。当客户端需要对象时,只需要简单地调用工厂方法,而不需要关心对象创建 的细节。 ...
  • u012574931
  • u012574931
  • 2016年02月26日 12:13
  • 400

静态工厂方法和实例工厂方法注入bean

一、静态工厂方法注入bean利用静态工厂方法可以把bean注入到IOC容器中。在XML文件中配置bean时,要指定class的属性为工厂的类;factory-method属性指定工厂类中工厂方法,用于...
  • u010502101
  • u010502101
  • 2017年11月26日 17:41
  • 288

Spring学习(三)ioc工厂bean深入理解

> 我所理解的工厂bean: 我们在使用ioc容器形成类之间的依赖关系,也就是在配置文件中配置bean的时候,一般是class指向的是实体bean类,通过ref将另外一个bean对象注入到这个类中...
  • u011250851
  • u011250851
  • 2015年08月25日 22:24
  • 5603

Spring 使用静态工厂方式实例化Bean

知识点介绍:静态工厂顾名思义,就是通过调用静态工厂的方法来获取自己需要的对象,为了让spring管理所有对象,我们不能直接通过"工程类.静态方法()"来获取对象,而是依然通过spring注入的形式获取...
  • ma_hoking
  • ma_hoking
  • 2014年12月20日 21:00
  • 3301

Spring 静态工厂和实例工厂

什么是静态工厂? 工厂类所有方法都是静态的 /** * 里面一般来说都是静态的方法 * @author memory_coder * @2017年10月2日 上午10:05:31 */ p...
  • memory_cood
  • memory_cood
  • 2017年10月03日 19:07
  • 176

设计模式之静态工厂、工厂方法和抽象工厂的联系与区别

解析: 开闭原则:对扩展开放,对修改封闭。静态工厂增加需要是修改源代码,对修改不封闭,不符合开闭原则。...
  • sinat_35512245
  • sinat_35512245
  • 2017年02月06日 11:31
  • 2217
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:动态工厂 Bean和静态工厂Bean
举报原因:
原因补充:

(最多只允许输入30个字)