动态工厂 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学习笔记 使用Static Factory(静态工厂类)创建Bean

普通定义Bean并且进行初始化的方法一般通过property(属性)的setter方法或者构造方法进行。例如 [html] view plaincopy b...

Spring学习笔记 使用Static Factory(静态工厂类)创建Bean

普通定义Bean并且进行初始化的方法一般通过property(属性)的setter方法或者构造方法进行。例如 这种定义创建Bean相当于使用new  com.cs...

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

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

Spring学习笔记 使用Non-Static Factory(非静态工厂类)创建Bean

同上一篇中静态工厂类创建Bean类似,唯一不同的是工厂类中获取实际对象的方法比如:getInstance() 不是静态方法(non-static)。 工厂类代码: package factoryb...

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

。。。。

框架 day37 Spring3,AOP,代理模式(动态/CGLIB/工厂bean),传统AOP,AspectJ框架(基于xml/注解),切入点表达式,jdbcTemplate

Spring3,AOP,代理模式(动态/CGLIB/工厂bean),传统AOP,AspectJ框架(基于xml/注解),切入点表达式,jdbcTemplate

Spring学习之使用静态工厂方法以及实例工厂方法配置bean

Spring之使用静态工厂方法以及实例工厂方法类返回bean的实例

深入学习Spring框架之五通过工厂方法创建Bean

前面我们介绍了,通过构造器的方式创建Bean对象,今天我们来讲一下通过工厂方法来创建Bean。     有些时候,我们有必要将一些类设置为单例模式,比如说一个国家的最高领导人,再比如我们在银行办理业...
  • lycyl
  • lycyl
  • 2016-09-08 16:01
  • 762

7.7.3:调用实例工厂方法创建Bean

。。。。

Spring框架学习(8):通过工厂方法配置bean

通过工厂方法配置bean有两种方式:一是通过静态工厂方法来配置,二是通过工厂实例方法来配置 一、静态工厂方法配置bean 写一个静态工厂方法的类: package factory; impor...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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