W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
前面我們介紹了:類型注入、接口注入、名稱注入。三種注入方式,下面我們在介紹一下 ID注入,這種方式和名稱注入很像但有所不同。我們先看一下代碼:
package net.test.hasor;
public class HelloModule implements Module {
public void loadModule(ApiBinder apiBinder) throws Throwable {
apiBinder.bindType(InfoBean.class).idWith("beanA");
apiBinder.bindType(InfoBean.class).idWith("beanB");
}
}
public class UseBean {
@Inject(value = "beanA" , byType = Type.ByID)
private InfoBean pojoA;
@Inject(value = "beanB" , byType = Type.ByID)
private InfoBean pojoB;
}
ID注入,我們看到區(qū)別于名字注入的第一個特點是 nameWith 換成了 idWith,其次在使用 @Inject 注解時也變得更加復(fù)雜還需要指定 byType 屬性。
下面我們來說一下 ID 注入和 Name 注入的本質(zhì)區(qū)別,眾所周知 IoC 在進行依賴注入時每一個要注入的 Bean 都是在 Hasor 容器中獲取的。
如果把注入的代碼轉(zhuǎn)化為一般的 getBean,Name方式
和 ID方式
的區(qū)別應(yīng)該像如下這樣:
appContext.findBindingBean("beanA",InfoBean.class);
appContext.findBindingBean("beanB",InfoBean.class);
appContext.getInstance("beanA");
appContext.getInstance("beanB");
ID方式還有一個最大的特征,那就是無論 ID 被用到那個類型中。一個 ID 不能被同時應(yīng)用。這一點和 Name 方式有很大的區(qū)別。
這也就是說我么不能使用 idWith 來套用 名稱注入
小節(jié)中的例子。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: