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

Google Guice - 常量绑定

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

Guice提供了一种使用值对象或常量创建绑定的方法.考虑我们要配置JDBC URL的情况.

使用@Named注释进行注入

  @Inject  public void connectDatabase(@Named("JBDC")String dbUrl){//... ... }

这可以使用toInstance()方法获得.

bind(String.class).annotatedWith(Names.named("JBDC")).toInstance("jdbc:mysql://localhost:5326/emp");

完整示例

创建一个名为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.makeConnection();   } }class TextEditor {   private String dbUrl;      @Inject   public TextEditor(@Named("JDBC") String dbUrl) {      this.dbUrl = dbUrl;   }   public void makeConnection() {      System.out.println(dbUrl);   } }//Binding Moduleclass TextEditorModule extends AbstractModule {   @Override      protected void configure() {      bind(String.class)         .annotatedWith(Names.named("JDBC"))         .toInstance("jdbc:mysql://localhost:5326/emp");   }  }

输出

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

jdbc:mysql://localhost:5326/emp