我來自guice世界,我正在尋找一種方式來做類似於Guice提供的Modules.override。我有一個模式,我爲我的創作創建了一個基本的Module/AbstractBinder,然後在測試中我重寫了需要更改的綁定。HK2什麼是正確的方式來重寫另一個AbstractBinder的綁定
在理想的世界中,我想簡單地擴展Parent AbstractBinder,然後實現綁定來覆蓋父級活頁夾。或者另一種方法是簡單地安裝父級Binder,然後覆蓋我想要用於測試目的的綁定。
public class IOCRestModule extends AbstractBinder {
@Override
protected void configure() {
// Max timeout for rest calls is 20 seconds, this will come from properties later on.
bind(20000).to(Integer.class).named("MAX_REST_REQUEST_TIMEOUT");
bind("tcp://localhost").to(String.class).named("jms.url");
}
}
public class IOCMockRestModule extends AbstractBinder {
public static final Logger logger = Logger.getLogger(IOCMockRestModule.class.getName());
@Override
protected void configure() {
install(new IOCRestModule());
bind(200).to(Integer.class).named("MAX_REST_REQUEST_TIMEOUT");
bind("vm://localhost").to(String.class).named("jms.url");
}
這是可能做到的,是否推薦?我注意到當我這樣做時,IOCRestModule的綁定沒有被IOCMockRestModule覆蓋。我假設我可以在最後添加安裝,這可能會工作,但不知道這是否會導致任何問題。
也正在安裝後您的其他綁定會因爲最老的綁定選擇規則的工作,如果他們有同等級別 – jwells131313 2015-02-10 12:46:09