Я пришел из мира guice и ищу способ сделать что-то похожее на Modules.override, предоставленное Guice. У меня есть шаблон, где я создаю базовый модуль/AbstractBinder для моего производства, а затем в тесте я переопределяю привязки, которые нужно изменить.HK2 Каков правильный способ переопределения привязок другого AbstractBinder
В идеальном мире я хотел бы просто расширить родительский 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