麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發設計 > 正文

Spring配置bean的方法(工廠方法和Factorybean)

2019-11-14 21:50:58
字體:
來源:轉載
供稿:網友
SPRing配置bean的方法(工廠方法和Factorybean)

通過工廠方法配置bean

  

  通過調用靜態工廠方法創建bean    通過靜態工廠方法創建bean是將對象創建的過程封裝到靜態方法中。當客戶端需要對象時,只需要簡單地調用靜態方法,而不關心創建對象的細節。    要聲明通過靜態方法創建的bean,需要在bean的class屬性里指定擁有該工廠的方法的類,通知在factory-method屬性里指定工廠方法的名稱,

    最后,使用<constructor-arg>元素為該方法傳遞方法參數  通過調用實例工廠方法創建bean    實例工廠方法:將對象的創建過程封裝到另外一個對象實例的方法里。當客戶端需要請求對象時,只需要簡單的調用該實例方法而不需關心對象的創建細節。    要聲明通過實例工廠方法創建的bean:      -在bean的factory-bean屬性里指定擁有該工廠方法的bean      -在factory-method屬性里指定該工廠方法的名稱      -使用constructor-arg元素為工廠方法傳遞方法參數

靜態工廠類:

 

 1 package com.yl.factory; 2  3 import java.util.HashMap; 4 import java.util.Map; 5  6 /** 7  * 靜態工廠方法:直接調用某一個類的靜態方法就可與返回bean的實例 8  * @author yul 9  *10  */11 public class StaticCarFactory {12     13     private static Map<String, Car> cars = new HashMap<String, Car>();14     15     static {16         cars.put("audi", new Car("audi", 300000));17         cars.put("ford", new Car("ford", 300000));18     }19     /**20      * 靜態工廠方法21      * @param name22      * @return23      */24     public static Car getCar(String name) {25         26         return cars.get(name);27     }28 }

實例工廠類:

 1 package com.yl.factory; 2  3 import java.util.HashMap; 4 import java.util.Map; 5 /*** 6  * 實例工廠方法:實例工廠的方法,即現需要創建工廠本身,在調用工廠的實例方法來返回bean的實例 7  * @author yul 8  * 9  */10 public class InstanceCarFactory {11     12     private Map<String, Car> cars = new HashMap<String, Car>();13     14     public InstanceCarFactory() {15         cars = new HashMap<String, Car>();16         cars.put("audi", new Car("audi", 300000));17         cars.put("ford", new Car("ford", 400000));18     }19     20     public Car getCar(String brand) {21         return cars.get(brand);22     }23 }

工廠方法的配置文件:

 1 <?xml version="1.0" encoding="UTF-8"?> 2 <beans xmlns="http://www.springframework.org/schema/beans" 3     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4     xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> 5  6     <!-- 通過靜態工廠方法來配置bean,注意不是配置靜態工廠方法實例,而是配置bean實例 --> 7     <!--  8         class屬性:指向靜態工廠方法的全類名 9         factory-method:指向靜態工廠方法的名字10         constructor-arg:如果靜態工廠方法需要傳入參數,則使用constructor-arg來配置參數11      -->12     <bean id="car1" 13         class="com.yl.factory.StaticCarFactory"14         factory-method="getCar">15         <constructor-arg value="audi"></constructor-arg>16     </bean>17     18     <!-- 配置工廠的實例 -->19     <bean id="carFactory" class="com.yl.factory.InstanceCarFactory"></bean>20     21     <!-- 22         factory-bean:指向實例工廠方法的bean23         factory-method:指向實例工廠方法的名字24         constructor-arg:如果實例工廠方法需要傳入參數,則使用constructor-arg來配置參數25      -->26     <!-- 通過實例工廠方法來配置bean -->27     <bean id="car2" factory-bean="carFactory" factory-method="getCar">28         <constructor-arg value="ford"></constructor-arg>29     </bean>30 </beans>

通過Factorybean配置bean

繼承Factorybean的實現類:

 1 package com.yl.factorybean; 2  3 import org.springframework.beans.factory.FactoryBean; 4 //自定義的Factorybean需要實現FactoryBean接口 5 public class CarFactoryBean implements FactoryBean<Car> { 6      7     private String brand; 8      9     public void setBrand(String brand) {10         this.brand = brand;11     }12     13     /**14      * 返回bean的對象15      */16     @Override17     public Car getObject() throws Exception {18         // TODO Auto-generated method stub19         return new Car("BMW", 600000);20     }21     /**22      * 返回bean的類型23      */24     @Override25     public Class<?> getObjectType() {26         // TODO Auto-generated method stub27         return Car.class;28     }29     30     @Override31     public boolean isSingleton() {32         // TODO Auto-generated method stub33         return true;34     }35     36 }

配置文件:

 1 <?xml version="1.0" encoding="UTF-8"?> 2 <beans xmlns="http://www.springframework.org/schema/beans" 3     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4     xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> 5     <!--  6         通過Factorybean來配置bean的實例 7         class:指向Factorybean的全類名 8         property:配置Factorybean的屬性 9         10         但實際返回的實例卻是Factorybean的getObject()方法返回的實例11      -->12     <bean id="car" class="com.yl.factorybean.CarFactoryBean">13         <property name="brand" value="BMW"></property>14     </bean>15 </beans>


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 91精品观看91久久久久久国产 | 亚洲va在线| 成人精品一区二区三区中文字幕 | 成人毛片视频在线观看 | 日日噜噜噜噜久久久精品毛片 | 久久久久.com | 欧美性受ⅹ╳╳╳黑人a性爽 | 亚洲国产精品久久久久久久久久 | 国产91精品久久久 | 国产亚洲精品久久久久久久久 | 国产91免费看| 久久久aa| 国产羞羞视频在线观看 | 国语自产免费精品视频在 | 黄色羞羞视频在线观看 | 久久久久久久99 | 国产精品啪一品二区三区粉嫩 | 九九黄色 | 中国老女人一级毛片视频 | 成人午夜免费在线观看 | 国产1区2区在线观看 | 久草手机在线观看视频 | 在线男人天堂 | 最新欧美精品一区二区三区 | 欧美精品一级 | 一级毛片真人免费播放视频 | 中国免费一级毛片 | 国产亚洲精彩视频 | 精品国产乱码久久久久久久 | 一级免费特黄视频 | 久久精品久久精品国产大片 | 久久精品之 | 51色视频 | 国产二三区| 成人精品久久 | 久草在线资源福利站 | 国产精品欧美久久久久一区二区 | 国产一区二区在线免费观看 | 国产分类视频 | 国产中文99视频在线观看 | 色综合视频网 |