开发手册 欢迎您!
软件开发者资料库

Google Guice - 可选注射

Google Guice可选注入 - 从简单和简单的步骤学习Google Guice,从基本概念到高级概念,包括概述,环境设置,第一个应用程序,绑定示例,链接,@命名,常量,构造函数,内置,即时绑定,绑定,@ provides注释,提供者类,注入示例,构造函数,方法,字段,可选,按需,静态,自动注入,范围,AOP。

注入是将依赖注入对象的过程.可选注入意味着在存在时注入依赖项.方法和场注入可以是可选的,并且如果不存在依赖性,则应该具有一些默认值.请参阅下面的示例.

示例

创建名为GuiceTester的java类.

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;public class GuiceTester {   public 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   public TextEditor( SpellChecker spellChecker) {      this.spellChecker = spellChecker;   }   public void makeSpellCheck() {      spellChecker.checkSpelling();   } }//Binding Moduleclass TextEditorModule extends AbstractModule {   @Override   protected void configure() {} }@ImplementedBy(SpellCheckerImpl.class)interface SpellChecker {   public void checkSpelling();}//spell checker implementationclass SpellCheckerImpl implements SpellChecker {   private String dbUrl = "jdbc:mysql://localhost:5326/emp";   public SpellCheckerImpl(){}      @Inject(optional=true)   public void setDbUrl(@Named("JDBC") String dbUrl) {      this.dbUrl = dbUrl;   }   @Override   public void checkSpelling() {       System.out.println("Inside checkSpelling." );      System.out.println(dbUrl);    }}

输出

编译并运行文件,你会看到以下输出.

Inside checkSpelling.jdbc:mysql://localhost:5326/emp