gpt4 book ai didi

binding - 使用guice绑定(bind)不同的 map

转载 作者:行者123 更新时间:2023-12-04 22:56:58 26 4
gpt4 key购买 nike

我的文件中有一张 map ,例如:

workflowProperties1 = { "key1" : "value1"; "key2": "value2"; };

workflowProperties2 = { "key1" : "value1"; "key2": "value2"; };

我想使用 guice 将此映射注入(inject)到类的构造函数中。我正在做类似的事情:
@Inject public myClass(@Named("workflowProperties1") Map<String,String> someMap) { }

有人可以建议我如何根据静态参数值在上面的 myClass 中注入(inject)两个映射(workflowProperties1 或 workflowProperties2)之一吗?

最佳答案

一个解决方案可能是使用 Guice Multibindings .请注意,核心 Guice 中不包含多绑定(bind)器,因此您需要对 com.google.inject.extensions:guice-multibindings 的额外依赖。 .

然后你可以定义你的绑定(bind)模块,像这样(实际上你会从你的文件中提取键/值):

@Override
protected void configure()
{
MapBinder<String, String> wf1Binder = MapBinder.newMapBinder(
binder(),
String.class,
String.class, Names.named("workflowProperties1"));

wf1Binder.addBinding("WF1Key").toInstance("WF1Value");

MapBinder<String, String> wf2Binder = MapBinder.newMapBinder(
binder(),
String.class,
String.class, Names.named("workflowProperties2"));

wf2Binder.addBinding("WF2Key").toInstance("WF2Value");
}

然后,您可以按照您的要求轻松地“基于静态参数值”注入(inject)正确的 map ,例如:
private static final String STATIC_PARAMETER_VALUE = "workflowProperties1";

@Inject
@Named(STATIC_PARAMETER_VALUE)
Map<String,String> someMap;

关于binding - 使用guice绑定(bind)不同的 map ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41367443/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com