Java 访问地图<;字符串,接口Impl>;在Guice的根对象图中不可配置
我想知道下面的Spring用法的等价物是什么Java 访问地图<;字符串,接口Impl>;在Guice的根对象图中不可配置,java,spring,dependency-injection,guice,Java,Spring,Dependency Injection,Guice,我想知道下面的Spring用法的等价物是什么 @Autowired Map<String,KeyWordExecutor> keyWordExecutors; 基于SPRING的代码 Class StandardRuleExecutor implements RuleExecutor { @Autowired Map<String,KeyWordExecutor> keyWordExectors; @Override public vo
@Autowired
Map<String,KeyWordExecutor> keyWordExecutors;
基于SPRING的代码
Class StandardRuleExecutor implements RuleExecutor
{
@Autowired
Map<String,KeyWordExecutor> keyWordExectors;
@Override
public void execute(List<String> rules)
{
int val = 0;
foreach(String rule : rules)
{
String keyword = getKeyWord(rule);
val = keyWordExecutors.get(keyword).execute(val, rule)
}
}
}
Class ApplicationLauncher
{
public static void main(String[] args)
{
ApplicationContext context = new FileSystemApplicationContext("bindings.xml");
RuleExecutor ruleExecutor = context.getBean("executor");
ruleExecutor.execute(args);
}
}
这正是我们的目的。从您的帖子中,似乎Spring方式要简单得多,但Spring方式也有一个大的xml文件,这一步很方便:)
在Guice中,您可以执行以下操作:
@Override
protected void configure() {
bind(RuleExector.class).to(StandardRuleExecutor.class); // Don't forget this one :)
MapBinder mb = MapBinder.newMapBinder(binder(), String.class, KeyWordExecutor.class);
mb.addBinding("foo").to(FooKeyWordExecutor.class);
mb.addBinding("bar").to(BarKeyWordExecutor.class);
// etc.
}
那么就做:
class StandardRuleExecutor implements RuleExecutor {
@Inject Map<String, KeyWordExecutor> keyWordExectors;
// The rest of your code is the same
}
类StandardRuleExecutor实现RuleExecutor{
@注入Map关键字执行器;
//代码的其余部分是相同的
}
你看了吗?你的帖子很少被关注的一个原因是你没有标记java。。。通过不标记Java,您将获得更少的视图。很抱歉延迟响应。正是我想要的。非常感谢。
@Override
protected void configure() {
bind(RuleExector.class).to(StandardRuleExecutor.class); // Don't forget this one :)
MapBinder mb = MapBinder.newMapBinder(binder(), String.class, KeyWordExecutor.class);
mb.addBinding("foo").to(FooKeyWordExecutor.class);
mb.addBinding("bar").to(BarKeyWordExecutor.class);
// etc.
}
class StandardRuleExecutor implements RuleExecutor {
@Inject Map<String, KeyWordExecutor> keyWordExectors;
// The rest of your code is the same
}