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

Google Guice - @Named Binding

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

Guice还提供了另一种在不创建自定义注释的情况下映射绑定的方法.它允许使用@Named注释.

使用命名注释进行映射

bind(SpellChecker.class).annotatedWith(Names.named("OpenOffice")).to(OpenOfficeWordSpellCheckerImpl.class);

使用@Named注释进行注入

@Injectpublic TextEditor(@Named("OpenOffice") SpellChecker spellChecker) {   this.spellChecker = spellChecker; }

完整示例

创建一个名为GuiceTester的java类.

GuiceTester.java

import com.google.inject.AbstractModule;import com.google.inject.Guice;import com.google.inject.Inject;import com.google.inject.Injector;import com.google.inject.name.Named;import com.google.inject.name.Names;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(@Named("OpenOffice") SpellChecker spellChecker) {      this.spellChecker = spellChecker;         }   public void makeSpellCheck() {      spellChecker.checkSpelling();    }  }//Binding Moduleclass TextEditorModule extends AbstractModule {   @Override      protected void configure() {      bind(SpellChecker.class).annotatedWith(Names.named("OpenOffice"))         .to(OpenOfficeWordSpellCheckerImpl.class);   } }//spell checker interfaceinterface SpellChecker {   public void checkSpelling();}//spell checker implementationclass SpellCheckerImpl implements SpellChecker {   @Override      public void checkSpelling() {      System.out.println("Inside checkSpelling." );   } }//subclass of SpellCheckerImplclass OpenOfficeWordSpellCheckerImpl extends SpellCheckerImpl {   @Override      public void checkSpelling() {      System.out.println("Inside OpenOfficeWordSpellCheckerImpl.checkSpelling." );   }}

输出

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

Inside OpenOfficeWordSpellCheckerImpl.checkSpelling..