Google Guice - Liên kết cố định

Guice cung cấp một cách để tạo liên kết với các đối tượng hoặc hằng giá trị. Hãy xem xét trường hợp chúng ta muốn định cấu hình url JDBC.

Tiêm bằng cách sử dụng chú thích @Named

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

Điều này có thể được giải quyết bằng cách sử dụng phương thức toInstance ().

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

Hoàn thành ví dụ

Tạo một lớp java có tên là GuiceTester.

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 Module
class TextEditorModule extends AbstractModule {

   @Override
   protected void configure() {
      bind(String.class)
         .annotatedWith(Names.named("JDBC"))
         .toInstance("jdbc:mysql://localhost:5326/emp");
   } 
}

Đầu ra

Biên dịch và chạy tệp, bạn sẽ thấy kết quả sau.

jdbc:mysql://localhost:5326/emp