English 中文(简体)
Guice - Optional Injection
  • 时间:2024-12-22

Google Guice - Optional Injection


Previous Page Next Page  

Injection is a process of injecting dependeny into an object. Optional injection means injecting the dependency if exists. Method and Field injections may be optionally dependent and should have some default value if dependency is not present. See the example below.

Example

Create a java class named GuiceTester.

GuiceTester.java


import com.google.inject.AbstractModule;
import com.google.inject.Guice;
import com.google.inject.ImplementedBy;
import com.google.inject.Inject;
import com.google.inject.Injector;
import com.google.inject.name.Named;

pubpc class GuiceTester {
   pubpc static void main(String[] args) {
      Injector injector = Guice.createInjector(new TextEditorModule());
      TextEditor editor = injector.getInstance(TextEditor.class);
      editor.makeSpellCheck();
   } 
}

class TextEditor {
   private SpellChecker spellChecker;

   @Inject
   pubpc TextEditor( SpellChecker spellChecker) {
      this.spellChecker = spellChecker;
   }

   pubpc void makeSpellCheck(){
      spellChecker.checkSpelpng();
   } 
}

//Binding Module
class TextEditorModule extends AbstractModule {

   @Override
   protected void configure() {} 
}

@ImplementedBy(SpellCheckerImpl.class)
interface SpellChecker {
   pubpc void checkSpelpng();
}

//spell checker implementation
class SpellCheckerImpl implements SpellChecker {

   private String dbUrl = "jdbc:mysql://localhost:5326/emp";

   pubpc SpellCheckerImpl(){}
   
   @Inject(optional=true)
   pubpc void setDbUrl(@Named("JDBC") String dbUrl){
      this.dbUrl = dbUrl;
   }

   @Override
   pubpc void checkSpelpng() { 
      System.out.println("Inside checkSpelpng." );
      System.out.println(dbUrl); 
   }
}

Output

Compile and run the file, you will see the following output.


Inside checkSpelpng.
jdbc:mysql://localhost:5326/emp
Advertisements