Don't inject the injector. Its almost always a code smell. Am 16. März 2015 14:57:13 MEZ, schrieb Laszlo Ferenczi <[email protected]>: >Hi, > >There are many ways to solve this problem, one easy enough to >understand: > >@Inject >Provider<CrawlerOne> crawlerOneProvider; > >@Inject >Provider<CrawlerTwo> crawlerTwo; > > >public Crawler getCrawler(String url) { > if (url...) { > return crawlerOneProvider.get(); > } > else { > return crawlerTwoProvider.get(); > } >} > > >As an alternative you can inject the injector itself and get the >instance >from it. > >Also a slightly more advanced, but much more elgant way is to use >AssistedInject (it's exectly for this use case) See the guice docs for >more >info. > >PS: no need to make everything static, the whole point of the DI >framework >that you don't need static anchors in your code. > >-- >L > >-- >L > >On Sun, Mar 15, 2015 at 4:37 PM, Barak Yaish <[email protected]> >wrote: > >> Hi, >> >> Doing my first steps with Guice, I thought the fastest way to >understand >> it would migrate parts of existing application to Guice style. The >> application is kind of web crawler, and I have factory creating >crawlers >> based on the input url: >> >> public static Crawler getCrawler( String url ) >> { >> try >> { >> if( url.contains( "www.site1.com" ) ) >> return new Site1( AppConfig.getInstance() ); >> else if( url.contains( "www.site2.com" ) ) >> return new Site2( AppConfig.getInstance() ); >> } >> catch ( Exception e ) >> { >> logger.error( "failure", e ); >> } >> >> return null; >> } >> >> >> Is the Guice version is only take the crawler instances from the >injector >> and injecting the AppConfig? >> >> public static Crawler getCrawler( String url ) >> { >> try >> { >> if( url.contains( "www.site1.com" ) ) >> return GuiceInjector.getInstance( Site1.class ); >> else if( url.contains( "www.site2.com" ) ) >> return GuiceInjector.getInstance( Site2.class ); >> } >> catch ( Exception e ) >> { >> logger.error( "failure", e ); >> } >> >> return null; >> } >> >> Is there a better and/or more elegant way? >> >> Thanks! >> >> -- >> You received this message because you are subscribed to the Google >Groups >> "google-guice" group. >> To unsubscribe from this group and stop receiving emails from it, >send an >> email to [email protected]. >> To post to this group, send email to [email protected]. >> Visit this group at http://groups.google.com/group/google-guice. >> To view this discussion on the web visit >> >https://groups.google.com/d/msgid/google-guice/8911e587-58bd-4631-80a2-7a5d91007431%40googlegroups.com >> ><https://groups.google.com/d/msgid/google-guice/8911e587-58bd-4631-80a2-7a5d91007431%40googlegroups.com?utm_medium=email&utm_source=footer> >> . >> For more options, visit https://groups.google.com/d/optout. >> > >-- >You received this message because you are subscribed to the Google >Groups "google-guice" group. >To unsubscribe from this group and stop receiving emails from it, send >an email to [email protected]. >To post to this group, send email to [email protected]. >Visit this group at http://groups.google.com/group/google-guice. >To view this discussion on the web visit >https://groups.google.com/d/msgid/google-guice/CAD-udUBRuBzSYL9-228W87Ab4fNSijVMSkeH7o0r6x4uQ3TbYQ%40mail.gmail.com. >For more options, visit https://groups.google.com/d/optout.
-- You received this message because you are subscribed to the Google Groups "google-guice" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at http://groups.google.com/group/google-guice. To view this discussion on the web visit https://groups.google.com/d/msgid/google-guice/EECDE6C4-3B12-43C5-B33D-839F717B8E69%40gmx.ch. For more options, visit https://groups.google.com/d/optout.
