在Spring容器中為一個bean配置依賴注入有三種方式:

成都創(chuàng)新互聯(lián)公司專業(yè)為企業(yè)提供鎮(zhèn)海網(wǎng)站建設(shè)、鎮(zhèn)海做網(wǎng)站、鎮(zhèn)海網(wǎng)站設(shè)計、鎮(zhèn)海網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計與制作、鎮(zhèn)海企業(yè)網(wǎng)站模板建站服務(wù),10余年鎮(zhèn)海做網(wǎng)站經(jīng)驗,不只是建網(wǎng)站,更提供有價值的思路和整體網(wǎng)絡(luò)服務(wù)。
Field注入是最常見的一種方式,可以采用 @Autowired 對Bean類的接口進(jìn)行初始化,代碼如下
@ContextConfiguration({"/META-INF/spring/amazing-base.xml"})
@RunWith(SpringJUnit4ClassRunner.class)
public class SpringInjectionTest {
@Autowired
private Cust normalCust;
@Test
public void testFieldInjection() {
System.out.println("testFieldInjection begin");
normalCust.recharge();
System.out.println("testFieldInjection end");
}
}
Cust為接口,NormalCust為其實現(xiàn)類,通過這種方式,可以通過Spring容器初始化NormalCust Bean,進(jìn)而調(diào)用recharge()方法。
構(gòu)造器注入主要用于某些類因為某種原因不能作為Bean,只是一個普通類。可以通過類的構(gòu)造方法傳入需要調(diào)用的Bean接口。
@ContextConfiguration({"/META-INF/spring/amazing-base.xml"})
@RunWith(SpringJUnit4ClassRunner.class)
public class SpringInjectionTest {
@Autowired
private Cust normalCust;
@Test
public void testConstructorInjection() {
System.out.println("testConstructorInjection begin");
ChargeThread thread = new ChargeThread(normalCust);
thread.run();
System.out.println("testConstructorInjection end");
}
}public class ChargeThread implements Runnable {
private Cust cust;
public ChargeThread(Cust cust) {
this.cust = cust;
}
public void run() {
cust.recharge();
}
}
上面的代碼通過初始化一個線程,在初始化的時候傳入Bean,在線程的類中調(diào)用Bean的充值方法。構(gòu)造器注入特別適合多線程的編程,因為線程不能定義為Bean,否則不僅會因為它是一個單例,而且會被Spring容器管理。(當(dāng)然你可以去定義Bean為原型Bean,能夠有多個副本,脫離Spring容器的管理),最重要的是我們要用線程池,由線程池來管理線程。
還有一種Setter方法注入,這種方式能用于final類的靜態(tài)方法,例如有一個充值的Util類,該類是final類,其方法是靜態(tài)方法。
public class SpringInjectionTest {
@Test
public void testSetterInjection() {
System.out.println("testSetterInjection begin");
String result = RechargeUtil.InstantRecharge();
System.out.println("testSetterInjection end, " + result);
}
}
@Component
public final class RechargeUtil {
private RechargeUtil() {
}
private static Cust normalCust;
@Autowired
public void setNormalCust(Cust normalCust) {
RechargeUtil.normalCust = normalCust;
}
public static String InstantRecharge() {
normalCust.recharge();
return "InstantRecharge Success!";
}
}
最后一種方式也成功了將normalCust注入到了RechargeUtil中。
以上三種注入方式,讀者可以根據(jù)實際應(yīng)用場景靈活選擇。也希望大家多多支持創(chuàng)新互聯(lián)。
文章題目:SpringBean三種注入方式詳解
鏈接分享:http://chinadenli.net/article42/gdsshc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供小程序開發(fā)、Google、網(wǎng)站改版、網(wǎng)站策劃、全網(wǎng)營銷推廣、動態(tài)網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)