Have a look here: http://code.google.com/p/google-guice/wiki/FrequentlyAskedQuestions#How_do_I_build_two_similar_but_slightly_different_trees_of_objec
On Tue, Dec 13, 2011 at 11:19 PM, James <[email protected]>wrote: > I'm trying to use Guice to bind various processor classes where each > processor takes a config object ( country specific ) and can operator on > that county. > > interface Config > { > String getName(); > } > > interface Processor > { > String getName(); > } > > class Process > { > private final Map<String, Processor> processorMap; > > @Inject > public Process(final Map<String, Processor> processorMap) > { > this.processorMap = processorMap; > } > > String process(final String country) > { > return processorMap.get(country).getName(); > } > } > > class ConfigA implements Config { > } > > class ConfigB implements Config { > } > > class ProcessorA implements Processor > { > > public ProcessorA(final SomeADeps deps, final Config config) {} > } > > > class ProcessorB implements Processor > { > > public ProcessorB(final Config config, final SomeBDeps deps) {} > } > > class Process > { > private final Map<String, Processor> processorMap; > > @Inject > public Process(final Map<String, Processor> processorMap) > { > this.processorMap = processorMap; > } > > String process(final String country) > { > return processorMap.get(country).getName(); > } > } > > > In the binding section > public class TestModule extends AbstractModule { > protected void configure() > { > //All the config object are created by loading from various > property files > Map<String, Config> countryToConfigMap; // This map is populated > > //I also have a property file, that says > // country US > use ProcessorA ( with ConfigA instance 1 ) > // country UK > use ProcessorA ( with ConfigA instance 2 ) > // country DE > use ProcessorB ( with ConfigB instance 1 ) > //etc > > //TODO: How to bind Process class ? > } > } > > In the main class, I'm trying to do something like this: > > Injector injector = Guice.createInjector(new TestModule()); > Process process = injector.getInstance(Process.class); > System.out.println("Name:" + process.process("US")); > > > Could someone help me understand and figure out on how to go about solving > the above design using guice ? > > Thanks! > > -- > You received this message because you are subscribed to the Google Groups > "google-guice" group. > To view this discussion on the web visit > https://groups.google.com/d/msg/google-guice/-/gS4dCrnJ_kkJ. > To post to this group, send email to [email protected]. > To unsubscribe from this group, send email to > [email protected]. > For more options, visit this group at > http://groups.google.com/group/google-guice?hl=en. > -- You received this message because you are subscribed to the Google Groups "google-guice" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/google-guice?hl=en.
