關(guān)于Spring工廠方法注入屬性方式
靜態(tài)工廠注入
在 Spring 中,也可以使用靜態(tài)工廠的方式實(shí)例化 Bean。此種方式需要提供一個(gè)靜態(tài)工廠方法創(chuàng)建 Bean 的實(shí)例。
① 創(chuàng)建實(shí)體類(lèi)
public class Person{ String name; public void setName(String name){ this.name = name; } }
② 創(chuàng)建靜態(tài)工廠類(lèi)
創(chuàng)建一個(gè)名為 MyBeanFactory 的類(lèi),并在該類(lèi)中創(chuàng)建一個(gè)名為 createBean() 的靜態(tài)方法,用于創(chuàng)建 Bean 的實(shí)例,如下所示。
public class MyBeanFactory { // 創(chuàng)建Bean實(shí)例的靜態(tài)工廠方法 public static Person createBean() { Person person = new Person(); person.setName("glp"); return person; } }
③ 創(chuàng)建 Spring 配置文件
創(chuàng)建 Spring 的配置文件 applicationContext.xml。
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd"> <bean id="person" class="com.mengma.instance.static_factory.MyBeanFactory" factory-method="createBean" /> </beans>
上述代碼中,定義了一個(gè) id 為 person 的 Bean,其中 class 屬性指定了其對(duì)應(yīng)的工廠實(shí)現(xiàn)類(lèi)為 MyBeanFactory,而 factory-method 屬性用于告訴 Spring 容器調(diào)用工廠類(lèi)中的 createBean() 方法獲取 Bean 的實(shí)例。
實(shí)例工廠注入
在 Spring 中,還有一種實(shí)例化 Bean 的方式就是采用實(shí)例工廠,直接在成員方法中創(chuàng)建 Bean 的實(shí)例。
同時(shí),在配置文件中,需要實(shí)例化的 Bean 也不是通過(guò) class 屬性直接指向其實(shí)例化的類(lèi),而是通過(guò) factory-bean 屬性配置一個(gè)實(shí)例工廠,然后使用 factory-method 屬性確定使用工廠中的哪個(gè)方法。
① 創(chuàng)建實(shí)體類(lèi)
public class Person{ String name; public void setName(String name){ this.name = name; } }
② 創(chuàng)建實(shí)例工廠類(lèi)
創(chuàng)建一個(gè)名為 MyBeanFactory 的類(lèi)。
public class MyBeanFactory { public MyBeanFactory() { System.out.println("person3工廠實(shí)例化中"); } // 創(chuàng)建Bean的方法 public Person createBean() { Person person = new Person(); person.setName("cbj"); return person; } }
③ 創(chuàng)建 Spring 配置文件
創(chuàng)建 Spring 的配置文件 applicationContext.xml,如下所示。
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd"> <!-- 配置實(shí)例工廠 --> <bean id="myBeanFactory" class="com.mengma.instance.factory.MyBeanFactory" /> <!-- factory-bean屬性指定一個(gè)實(shí)例工廠,factory-method屬性確定使用工廠中的哪個(gè)方法 --> <bean id="person" factory-bean="myBeanFactory" factory-method="createBean" /> </beans>
上述代碼中,首先配置了一個(gè)實(shí)例工廠 Bean,然后配置了需要實(shí)例化的 Bean。
在 id 為 person的 Bean 中,使用 factory-bean
屬性指定一個(gè)實(shí)例工廠,該屬性值就是實(shí)例工廠的 id 屬性值。
使用 factory-method 屬性確定使用工廠中的 createBean() 方法。
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Java網(wǎng)絡(luò)編程之簡(jiǎn)單的服務(wù)端客戶(hù)端應(yīng)用實(shí)例
這篇文章主要介紹了Java網(wǎng)絡(luò)編程之簡(jiǎn)單的服務(wù)端客戶(hù)端應(yīng)用,以實(shí)例形式較為詳細(xì)的分析了java網(wǎng)絡(luò)編程的原理與服務(wù)器端客戶(hù)端的實(shí)現(xiàn)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-04-04java開(kāi)發(fā)之SQL語(yǔ)句中DATE_FORMAT函數(shù)舉例詳解
要將日期值格式化為特定格式,請(qǐng)使用DATE_FORMAT函數(shù),下面這篇文章主要給大家介紹了關(guān)于java開(kāi)發(fā)之SQL語(yǔ)句中DATE_FORMAT函數(shù)的相關(guān)資料,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-05-05mvc架構(gòu)實(shí)現(xiàn)商品的購(gòu)買(mǎi)(二)
這篇文章主要為大家詳細(xì)介紹了mvc架構(gòu)實(shí)現(xiàn)商品購(gòu)買(mǎi)功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-11-11Java中繼承thread類(lèi)與實(shí)現(xiàn)Runnable接口的比較
這篇文章主要介紹了Java中繼承thread類(lèi)與實(shí)現(xiàn)Runnable接口的比較的相關(guān)資料,需要的朋友可以參考下2017-06-06C語(yǔ)言中下標(biāo)與指針的轉(zhuǎn)換以及指向指針的指針的例子
這篇文章主要介紹了C語(yǔ)言中下標(biāo)與指針的轉(zhuǎn)換以及指向指針的指針的示例,是C語(yǔ)言入門(mén)學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下2015-11-11JavaWeb項(xiàng)目中DLL文件動(dòng)態(tài)加載方法
在JavaWeb項(xiàng)目中,有時(shí)候我們需要在運(yùn)行時(shí)動(dòng)態(tài)加載DLL文件(在Windows中是DLL,在Linux中是SO文件),這通常用于實(shí)現(xiàn)一些特定的功能,比如調(diào)用本機(jī)代碼或者使用某些特定于操作系統(tǒng)的API,本文將介紹如何在JavaWeb項(xiàng)目中動(dòng)態(tài)加載DLL文件,需要的朋友可以參考下2024-12-12MyBatis-Plus解決邏輯刪除與唯一索引的問(wèn)題
本文主要介紹了MyBatis-Plus解決邏輯刪除與唯一索引的問(wèn)題,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-08-08