Are GuiSqlMapClientProvider and NdaSqlMapClientProvider supposed to be singletons? You might want to try something like toInstance() method described in the docs for Binder:
http://google-guice.googlecode.com/svn/trunk/javadoc/com/google/inject/Binder.html bind(SqlMapClient.class).annotatedWith(Gui.class).toInstance( <a singleton instance of GuiSqlMapClient constructed however you like> ); bind(SqlMapClient.class).annotatedWith(Nda.class).toInstance( <a singleton instance of NdaSqlMapClient constructed however you like> ); Then forget about using providers. You can build the two objects however you like, with constructors or a factory method or a builder, and then Guice will inject them whenever it sees an SqlMapClient annotated with the appropriate annotations. Or I might have completely misunderstood the problem :-) Andrew. 2009/1/14 Andrew Clegg <[email protected]>: > Are GuiSqlMapClientProvider and NdaSqlMapClientProvider supposed to be > singletons? You might want to try something like toInstance() method > described in the docs for Binder: > > http://google-guice.googlecode.com/svn/trunk/javadoc/com/google/inject/Binder.html > > bind(SqlMapClient.class).annotatedWith(Gui.class).toInstance( <a > singleton instance of GuiSqlMapClient constructed however you like> ); > bind(SqlMapClient.class).annotatedWith(Nda.class).toInstance( <a > singleton instance of NdaSqlMapClient constructed however you like> ); > > Then forget about using providers. > > You can build the two objects however you like, with constructors or a > factory method or a builder, and then Guice will inject them whenever > it sees an SqlMapClient annotated with the appropriate annotations. > > Or I might have completely misunderstood the problem :-) > > Andrew. > > 2009/1/14 Rick <[email protected]>: >> >> I'm finding this so frustrating. DI is supposed to make my job easier, >> and I'm wasting way too much time on this and I have way tooo much >> code, when I consider how simple this is without Guice... therefor I >> must be missing something really simple, so I'm posting here for some >> help. >> >> The bottom line is I want to different abstract daos injected with >> different versions of an ibatis called SqlMapClient. The SqlMapClient >> needs to be loaded from a config file that it finds on the classpath. >> This should be simple (since without DI, it's cake, I just have a >> static block in each type of main dao that loads the SqlMapClient.) >> >> So far here is what I'm trying and it seems way overkill... >> >> http://pastie.org/360247 >> >> Besides the fact that I'm getting an error as shown here >> http://pastie.org/360249 due to the annotation binding (if I remove >> the annotation things are ok, for at least one dao) >> >> But overall my question is that there must be a more simple way to set >> this up. I shouldn't need two or more concrete Provider classes that >> do identical things.. the only difference is the configuration name. >> In Spring I'd simply declare my SqlMapClient twice with a different id >> for each and then use the appropriate id for each bean definition I >> declared. It seemed a lot easier, so I'm probably missing something >> simple here, since overall I was finding Guice to involve less >> configuration than Spring. >> >> I basically want to say "For this class Foo when you inject TypeA make >> sure TypeA refers to this configuration when it's instantiated. When >> class Bar is instantiated and you inject TypeA make sure TypeA refers >> to a different configuration when it's instantiated." The initial >> paste here http://pastie.org/360247 should make it sort of clear with >> what I was attempting. >> >> Another thing is also a red flag I'm doing something wrong. In java if >> you loo at that paste you'll see I'm pushing down setSqlMapClient into >> the main subclasses of BaseDAO, only for the sole purpose of being >> able to provide an annotation to help with guice. I shouldn't need to >> do this. I should be able to keep the setSqlMapClient in the BaseDAO >> class, but if I did that I was having no way to say "use this version >> of the SqlMapClient" for your argument in setSqlMapClient." >> >> What am I doing wrong? Thanks for any help. >> >> I'm so frustrated because all of this time I've been spending trying >> to figure out just how to set all this up when it's so simple in >> 'plain java.' >> >> >> >> > > > > -- > New site launched: http://biotext.org.uk/ > > I am retiring my old email addresses. > Please use [email protected] where firstname = andrew. > -- New site launched: http://biotext.org.uk/ I am retiring my old email addresses. Please use [email protected] where firstname = andrew. --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---
