我来自 guice 世界,正在寻找一种类似于 Guice 提供的 Modules.override 的方法。我有一个模式,我为我的生产创建一个基本模块/抽象绑定器,然后在测试中我覆盖需要更改的绑定。
在理想的世界中,我想简单地扩展父 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 覆盖。我假设我可以在最后添加安装,这可能会起作用,但不确定这是否会在以后引起任何问题。