日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

Spring学习记录(九)---通过工厂方法配置bean

發(fā)布時間:2024/1/17 javascript 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Spring学习记录(九)---通过工厂方法配置bean 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

?

1. 使用靜態(tài)工廠方法創(chuàng)建Bean,用到一個工廠類

例子:一個Car類,有brand和price屬性。

1 package com.guigu.spring.factory; 2 3 public class Car { 4 private String brand; 5 private double price; 6 7 public Car(){ 8 } 9 public Car(String brand,double price){ 10 this.brand=brand; 11 this.price=price; 12 } 13 public String getBrand() { 14 return brand; 15 } 16 public void setBrand(String brand) { 17 this.brand = brand; 18 } 19 public double getPrice() { 20 return price; 21 } 22 public void setPrice(double price) { 23 this.price = price; 24 } 25 @Override 26 public String toString() { 27 return "Car [brand=" + brand + "]"; 28 } 29 }

?工廠類:

1 package com.guigu.spring.factory; 2 3 import java.util.HashMap; 4 import java.util.Map; 5 6 public class StaticCarFactory { 7 8 private static Map<String,Car> cars=new HashMap<String,Car>(); 9 //靜態(tài)代碼塊,防止重復(fù)添加 10 static{ 11 cars.put("aodi", new Car("aodi",300000)); 12 cars.put("ford", new Car("ford",200000)); 13 } 14 //靜態(tài)工廠方法 15 public static Car getCar(String name){ 16 return cars.get(name); 17 } 18 }

?

xml配置?

?

1 <?xml version="1.0" encoding="UTF-8"?> 2 <beans 3 xmlns="http://www.springframework.org/schema/beans" 4 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 5 xmlns:context="http://www.springframework.org/schema/context" 6 xsi:schemaLocation=" 7 http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 8 http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd"> 9 <!-- 10 class屬性:指向靜態(tài)工廠方法的全類名,不是bean實例的實現(xiàn)類 11 factory-method:指向靜態(tài)工廠方法的名字,方法里面返回bean 12 constructor-arg:如果工廠方法需要傳入?yún)?shù),則用constructor-arg配置 13 14 --> 15 <bean id="car1" class="com.guigu.spring.factory" factory-method="getCar"> 16 <constructor-arg value="aodi"></constructor-arg> 17 </bean> 18 19 </beans>

?main函數(shù)測試

?

1 public class main { 2 3 public static void main(String[] args) { 4 ApplicationContext ctx =new ClassPathXmlApplicationContext("bean-factory.xml"); 5 Car car1=(Car) ctx.getBean("car1"); 6 System.out.println(car1); 7 } 8 }

?輸出:

?

這個過程中,spring不再自己創(chuàng)建bean實例,bean實例由用戶自己提供的工廠方法創(chuàng)建。靜態(tài)工廠方法,方法必須是靜態(tài)的

---------------------------------------

其實我還是不懂, 調(diào)用靜態(tài)方法

什么時候?qū)ars進(jìn)行初始化了?單單調(diào)用靜態(tài)方法并沒有執(zhí)行工廠類。望看觀指教

--------------------------------------

2. 實例工廠方法,工廠本身是實例,要實現(xiàn)創(chuàng)建工廠對象本身

?

1 /* 2 * 實例工廠方法:實例工廠的方法,即先需要創(chuàng)建工廠本身,再調(diào)用工廠的實例方法來返回bean的實例 3 * */ 4 public class InstanceCarFactory { 5 6 private Map<String,Car> cars=null; 7 8 public InstanceCarFactory(){ 9 cars = new HashMap<String, Car>(); 10 cars.put("aodi", new Car("aodi",300000)); 11 cars.put("ford", new Car("ford",400000)); 12 } 13 // 14 public Car getCar(String brand){ 15 return cars.get(brand); 16 } 17 }

?

xml配置

1 <!--先配置工廠的實例--> 2 <bean id="carFactory" class="com.guigu.spring.factory"></bean> 3 <!-- 4 factory-bean屬性:指向?qū)嵗S方法的bean 5 method:指向靜態(tài)工廠方法的名字 6 constructor-arg:如果工廠方法需要傳入?yún)?shù),用constructor-arg配置 7 --> 8 <bean id="car2" factory-bean="carFactory" factory-method="getCar"> 9 <constructor-arg value="ford"></constructor-arg> 10 </bean>

?

main函數(shù)

public class main {public static void main(String[] args) {ApplicationContext ctx =new ClassPathXmlApplicationContext("bean-factory.xml");Car car2 = (Car) ctx.getBean("car2");System.out.println(car2); } }

?

輸出:

?這個好理解,先實例工廠,調(diào)用構(gòu)造函數(shù),然后bean調(diào)用工廠的方法。

?

?文章為學(xué)習(xí)記錄,若有錯誤,望指正

轉(zhuǎn)載于:https://www.cnblogs.com/ooooevan/p/5804784.html

總結(jié)

以上是生活随笔為你收集整理的Spring学习记录(九)---通过工厂方法配置bean的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。