Unless you tell guice that a dependency is optional it will never inject null. It would fail with an exception if it could not fullfil a dependency.
So for me the most likely cause of you seeing null is that the instance you are inspecting is created by calling new, using reflection or by another DI framework (like CDI or Spring). Best strategy to debug this would be to make the field _bankAccountProvider final. Then create a constructor to pass in the instance and annotate the constructor with @Inject. Now you can place a breakpoint in the constructor. This will show you who is creating the instance. And if somebody is calling new the compiler may already tell you before you execute the code. By the way: I would always favour constructor injection over field injection - because it makes writing tests simpler (just call the constructor from your test class) - an ugly constructor with 5+ arguments smells stronger than 5+ fields with annotation. And this is good because having that many dependency is often a sign that a class has too many responsebilities... Am 18. Juni 2018 17:19:46 MESZ schrieb Adil Quraish <[email protected]>: > > >I am trying to get Guice to work in a web application deployed on JBoss >EAP >6.4 When I try to step through the Guice code, I notice that the >binding is >happening. However, when I try to inject the bound object, I always get > >null. The following are the code changes I have done to enable Guice - > > >1) *web.xml* > ><listener> > <listener-class>com.univeris.guice.GuiceConfig</listener-class> ></listener> > ><filter> > <filter-name>guiceFilter</filter-name> > <filter-class>com.google.inject.servlet.GuiceFilter</filter-class> ></filter> > ><filter-mapping> > <filter-name>guiceFilter</filter-name> > <url-pattern>/*</url-pattern> ></filter-mapping> > > >2) *GuiceConfig* > >@Singleton >public class GuiceConfig extends GuiceServletContextListener { >@Override >protected Injector getInjector() { > Injector injector = Guice.createInjector( > new ServletModule() { > @Override > protected void configureServlets() { > serve("/uif/*").with(UIFInitializeServlet.class); >serve("/upm/*").with(IDPServlet.class, >ImmutableMap.of("instance-name","upm")); >serve("/uiw/*").with(IDPServlet.class, >ImmutableMap.of("instance-name","uiw")); > } > }, > new MainModule() > ); > > return injector; > } >} > > >3) *MainModule* > >public class MainModule extends AbstractModule { > > @Override > protected void configure() { > install(new BankAccountModule()); > install(new CoreModule()); > } >} > > >4) *BankAccountModule* > >public class BankAccountModule extends AbstractModule { > @Override > protected void configure() { >bind(BankAccountProvider.class).toProvider(BankAccountGuiceProvider.class); > >bind(BankAccountService.class).toProvider(BankAccountServiceProvider.class); > } >} > > >5) *BankAccountGuiceProvider* > >public class BankAccountGuiceProvider implements >Provider<BankAccountProvider> { > @Override > public BankAccountProvider get() { > return ProviderLocator.locateProvider(BankAccountProvider.class); > } >} > > >6) *BankAccountServiceUVS* > >@Stateless >@Interceptors(ServiceInterceptor.class) >public class BankAccountServiceUVS implements BankAccountService { > > @Inject > private BankAccountProvider _bankAccountProvider; > > @Override >public BankAccountCollection getAllBankAccounts(final Integer entityId, >final String entityType) { >BankAccountCollection retVal = >_bankAccountProvider.getAllBankAccounts(entityId, > return PojoHelper.cloneObject(retVal); > } >} > > >The *_bankAccountProvider* is always injected as null. I have been >pouring >through several forums for several days to no avail. Can someone point >out >what I am missing? > >-- >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 https://groups.google.com/group/google-guice. >To view this discussion on the web visit >https://groups.google.com/d/msgid/google-guice/674dcd19-115c-43b3-bf58-572193bb619b%40googlegroups.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 https://groups.google.com/group/google-guice. To view this discussion on the web visit https://groups.google.com/d/msgid/google-guice/78D9B98B-AAD4-44C0-A466-17E8441D9B2B%40gmx.ch. For more options, visit https://groups.google.com/d/optout.
