Spring框架開發(fā)IOC兩種創(chuàng)建工廠方法詳解
1.IOC有兩種創(chuàng)建工廠的方法
IoC 通過工廠模式創(chuàng)建 bean 的方式有兩種: 靜態(tài)工廠方法 實(shí)例工廠方法
2.兩種方法的不同
2.1靜態(tài)方法創(chuàng)建
就是直接可以通過靜態(tài)方法來實(shí)例化一個(gè)對象,采用類名.方法名的方式創(chuàng)建
public class HelloFactory {
public static HelloWorld getInstance(){
return new Hello();
}
}
HelloWorldFactory.getInstance();
2.2實(shí)例方法創(chuàng)建
采用new的方式在堆內(nèi)存開辟
public class Hello {
public HelloWorld createHelloWorld(){
return new Hello();
}
}
Hello helloF = new Hello();
hello.createHelloWorld();
靜態(tài)工廠方法
package entity;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Car {
private long id;
private String name;
}
package factory;
import entity.Car;
import java.util.HashMap;
import java.util.Map;
public class StaticCarFactory {
private static Map<Long, Car> carMap;
static{
carMap = new HashMap<Long, Car>();
carMap.put(1L,new Car(1L,"寶⻢"));
carMap.put(2L,new Car(2L,"奔馳"));
}
public static Car getCar(long id){
return carMap.get(id);
}
}
xml配置文件
<!-- 配置靜態(tài)⼯⼚創(chuàng)建 Car --> <bean id="car" class="com.southwind.factory.StaticCarFactory" factorymethod="getCar"> <constructor-arg value="2"></constructor-arg> </bean>
實(shí)例工廠創(chuàng)建
package factory;
import entity.Car;
import java.util.HashMap;
import java.util.Map;
public class InstanceCarFactory {
private Map<Long, Car> carMap;
public InstanceCarFactory(){
carMap = new HashMap<Long, Car>();
carMap.put(1L,new Car(1L,"寶⻢"));
carMap.put(2L,new Car(2L,"奔馳"));
}
public Car getCar(long id){
return carMap.get(id);
}
}
xml配置文件
<!-- 配置實(shí)例⼯⼚ bean --> <bean id="carFactory" class="factory.InstanceCarFactory"> </bean> <!-- 賠償實(shí)例⼯⼚創(chuàng)建 Car --> <bean id="car2" factory-bean="carFactory" factory-method="getCar"> <constructor-arg value="1"></constructor-arg> </bean>
總結(jié)
工廠模式的思想正好契合SpringIOC的設(shè)計(jì)思想:某一接口的具體實(shí)現(xiàn)類的選擇控制權(quán)從調(diào)用類中移除,轉(zhuǎn)而交給第三方?jīng)Q定,即借由Spring的Bean配置來實(shí)現(xiàn)控制,這同樣也是工廠模式的思想。充分體現(xiàn)出解耦合和便于維護(hù)的特性。
以上就是Spring框架IOC兩種創(chuàng)建工廠方法詳解的詳細(xì)內(nèi)容,更多關(guān)于Spring框架IOC創(chuàng)建工廠的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
java調(diào)用中國天氣網(wǎng)api獲得天氣預(yù)報(bào)信息的方法
這篇文章主要介紹了java調(diào)用中國天氣網(wǎng)api獲得天氣預(yù)報(bào)信息的方法,可實(shí)現(xiàn)調(diào)用溫度、風(fēng)力風(fēng)向及近期天氣狀況等功能,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-07-07
Java 使用 HttpClient 發(fā)送 GET請求和 POST請求
本文主要介紹了Java 使用 HttpClient 發(fā)送 GET請求和 POST請求,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-08-08
spring boot啟動時(shí)加載外部配置文件的方法
這篇文章主要給大家介紹了關(guān)于spring boot啟動時(shí)加載外部配置文件的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。2018-02-02
SpringBoot解析指定Yaml配置文件的實(shí)現(xiàn)過程
這篇文章主要介紹了SpringBoot解析指定Yaml配置文件,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-03-03
Centos7安裝JDK1.8詳細(xì)過程實(shí)戰(zhàn)記錄
這篇文章主要給大家介紹了關(guān)于Centos7安裝JDK1.8的相關(guān)資料,文中通過圖文以及實(shí)例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2022-09-09
Java 編程如何使用 Class.forName() 加載類
在一些應(yīng)用中,無法事先知道使用者將加載什么類,而必須讓使用者指定類名稱以加載類,可以使用 Class的靜態(tài)forName()方法實(shí)現(xiàn)動態(tài)加載類,這篇文章主要介紹了Java編程如何使用Class.forName()加載類,需要的朋友可以參考下2022-06-06
SpringBoot基于Swagger2構(gòu)建API文檔過程解析
這篇文章主要介紹了SpringBoot基于Swagger2構(gòu)建API文檔過程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-11-11

