Hasor ID注入

2018-10-09 16:36 更新

前面我們介紹了:類型注入、接口注入、名稱注入。三種注入方式,下面我們在介紹一下 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注入和 Name注入的區(qū)別


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é)中的例子。


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號