工厂bean和bean工厂

FactoryBean(工厂bean):是bean的加工工厂,是对已知bean的加工,是一个接口,要实现三个方法:

  1.Object  getObject()可以对bean进行加工添加功能。

  2.Class getObjectType()。

  3.Boolean isSingleton()。

    Bf.getBean(“ab”)只是得到MyFactory.getObject()的object对象,所以最后要强转。


BeanFactory bean工厂就是生产bean的工厂,注入:由于Spring Ioc容器以框架的方式提供了工厂方法的功能,并以透明的方式给开发者,不过在一些遗留系统或第三方类库中,我们还会碰到工厂方法,这时用户可以使用Spring工厂方法注入的方式进行配置。


  静态工厂类方法都是静态的,这意味着用户在无需创建工厂类实力的情况下就可以调用工厂类方法。因此静态工厂方法比非静态工厂方法的调用更加方便。我们将carFactory类的getCar()方法调整为静态的然后再Spring配置如下:

      <bean id=“car” class=“carFactory” factory-method=“getCar”/>

用户直接通过class属性指定工厂类,然后再通过factory-method指定对应的静态工厂方法创建bean。如果静态工厂方法需要参数则用<p:constructor-arg index=“1” value=“calendar”></p:constructor-arg>传入实例工厂方法:

有些工厂是非静态的,即必须是实例化工厂类才能调用工厂方法。

下面是一个实例化工厂类CarFactory类来为Car提供的实例:

package com.car;

public class CarFactory{

   public Car getCar(){

      return new Car();

  }

}

工厂类负责创建一个或多个目标类实例。工厂类方法一般以接口或抽象类变量的形式返回目标类。工厂类对外屏蔽了目标类的实例化步骤。调用甚至不知道如何具体的目标类是什么。

下面我们在Spring配置文件中进行配置

     <bean  id="carFactory" class="com.CarFactory"/>

    <bean id="car" factory-bean="carFactory"  factory-method="getCar"/>

factory-bean="carFactory"指定了工厂类Bean,

factory-method="getCar"指定了工厂类Bean创建该Bean的工厂方法。

和静态工厂类似如果工厂方法需要参数则用

<p:constructor-arg index=“0” value=“calendar”></p:constructor-arg>




  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值