If you think you can use look up an appopriate database implementation from a map <String, ? extends Database>, then you can also use MapBinder. You can find more information from MapBinder javadocs.
On Sun, Apr 4, 2010 at 10:31 AM, Sam Berlin <[email protected]> wrote: > You can bubble the logic up to place that installs the modules. ie., have a > MySqlModule, a PostgresqlModule, and a GenericDbModule and conditionally > insert one of those modules into the list of modules that's passed to create > the injector. > > Sam > > > On Apr 4, 2010, at 1:23 PM, rod <[email protected]> wrote: > > I don't think it's a really bad solution, I just read this page - > <http://code.google.com/p/google-guice/wiki/AvoidConditionalLogicInModules> > http://code.google.com/p/google-guice/wiki/AvoidConditionalLogicInModules - > and wanted to check there wasn't a better way to do this. > > Cheers, > rod. > > On 4 April 2010 14:33, Max Bowsher < <[email protected]>[email protected]> wrote: > >> rod wrote: >> > Hi, >> > >> > I'm sure this question must have been asked a million times but I >> > can't find the answer... >> > >> > In my application the user can provide command line flags for various >> > options, one being the type of database to use. So I have a bunch of >> > implementations of my Database interface, and at the moment on startup >> > I do... >> > >> > if ( dbType.equals("mysql") ) { >> > // create mysql implementation >> > } >> > else if ( dbType.equals("other..") ) { >> > // ... >> > } >> > else { >> > // some other implementation... >> > } >> > >> > The database class is then injected into components when needed. How >> > is this handled with Guice? The only way I can see is to move this >> > logic to my module like this... >> > >> > if ( dbType.equals("mysql") ) { >> > bind( Database.class ).to( MySQLDatabase.class ); >> > } >> > >> > Is there a better way? >> >> What's wrong with the method that you describe above that you seek to >> improve upon? >> >> Max. >> >> > > > -- > "I backed my car into a cop car the other day. But he just drove on, > sometimes life's ok." > > -- > 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. > > -- > 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]<google-guice%[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.
