use a childinjector with private modules for this Application.ApplicationModule <--- parent injector Application.ComponentA.AModule <-- ChildA (private module) Application.ComponentB.BModule <-- ChildB (private module) Application.ComponentB.SubcomponentC.CModule <--ChildB (Installed from BModule?)
2014-11-20 10:36 GMT+01:00 'MrIcehawk' via google-guice <[email protected]>: > Hello, > I am using Guice 3.0 to develop an Application that consists of several > packages. > I would like to have Bindings which are only visible in one package and its > subpackages. > I have one Module per Package where I configure the Bindings used in that > package. > Currently I the Module in the root package installs the Modules in its > subpackages, which then install the Modules in their subpackages and so on. > > That means if I have the following packages: > Application > Application.ComponentA > Application.ComponentB > Application.ComponentB.SubcomponentC > > I would have the following Modules: > Application.ApplicationModule > Application.ComponentA.AModule > Application.ComponentB.BModule > Application.ComponentB.SubcomponentC.CModule > > The ApplicationModule would look like: > public class ApplicationModule extends AbstractModule{ > @Override > protected void configure() { > install(new AModule()); > install(new BModule()); > > // Configure some Bindings > } > } > > And I would create one Injector in the Main Method using: > Guice.createInjector(new MainModule()); > > Objects are created using Constructor and Method injection, injecting > Providers if needed. > > However, if BModule maps List<String> to ArrayList<String> then AModule also > sees that Binding. Also if AModule tries to bind List<String> to > LinkedList<String> I will get a conflict. > I would like to have a binding configured in BModule to be only visible > within ComponentB and SubcomponentC. Such that a class which requests a > List<String> gets a LinkedList if its in ComponentA, a ArrayList if its in B > or C and an error if its somewhere else. > > The reason is, that I would like packages on the same level to be > independent and only depend on their ancestors. > > I have seen that Guice features child-injectors and PrivateModule, but I am > unsure if/how I could use that to achieve my goal. > > Thanks in advance, > Martin Haug > > -- > 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/d2917f17-550f-4334-b28a-883da852e14d%40googlegroups.com. > For more options, visit https://groups.google.com/d/optout. -- Best regards / Med venlig hilsen Nino Martinez -- 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/CAAHmKFwFbCfmJ6%3Dw3fcn2hhi8f2Q0mD59YhBjXkD%2BqJ%3DZ-nKDQ%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.
