工廠bean和bean工廠

FactoryBean(工廠bean):是bean的加工工廠,是對已知Bean的加工,是一個接口,要實現三個方法:java

① Object getObject()能夠對bean進行加工添加功能。框架

② Class getObjectType()。spa

③ Boolean isSingleton()。code

Bf.getBean(「ab」)只是獲得MyFactory.getObject()的object對象 因此最後要強轉。對象

Beanfactory bean工廠 就是生產bean的工廠,注入:接口

因爲Spring IoC容器以框架的方式提供了工廠方法的功能,並以透明的方式給開發者,不過在一些遺留系統或第三方類庫中,咱們還會碰到工廠方法,這時用戶能夠使用Sping使用工廠方法注入的方式進行配置。開發

靜態工廠方法:get

不少工廠類方法都是靜態的,這意味着用戶在無須建立工廠類實例的狀況就能夠調用工廠類方法。所以靜態工廠方法比非靜態工廠方法的調用更加方便。咱們將carFactory類的getCar()方法調整爲靜態的而後再Spring配置以下:class

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

用戶直接經過class屬性指定工廠類, 而後在經過factory-method指定對應的靜態工廠方法建立bean。容器

若是靜態工廠方法須要參數則用傳入

實例工廠方法:

有些工廠是非靜態的,即必須是實例化工廠類才能調用工廠方法。

下面咱們實例化一個工廠類CarFactory類來爲Car類提供實例。

package com.car;

public class CarFactory { public Car getCar(){return new Car();}} 

工廠類負責建立一個或多個目標類實例,工廠類方法通常以接口或抽象類變量的形式返回目標類。工廠類對外屏蔽了目標類的實例化步驟。調

用甚至不知道如何具體的目標類是什麼。

下面咱們在Spring 配置文件中進行配置

<!--工廠Bean生成目標Bean--> <bean id=」carFactory」 class=」com.CarFactory」/> <!--工廠Bean目標Bean--> <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>傳入
相關文章
相關標籤/搜索