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