Tôi gặp sự cố với AssistedInject. Tôi làm theo các hướng dẫn trên liên kết này https://github.com/google/guice/wiki/AssistedInject nhưng khi tôi chạy ứng dụng của tôi, tôi nhận được một lỗi:Guice assistedinject đã được định cấu hình
ERROR [2015-04-23 14:49:34,701] com.hubspot.dropwizard.guice.GuiceBundle: Exception occurred when creating Guice Injector - exiting
! com.google.inject.CreationException: Unable to create injector, see the following errors:
!
! 1) A binding to java.lang.String annotated with @com.google.inject.assistedinject.Assisted(value=) was already configured at com.demo.migrator.service.democlient.DemoAPIFactory.create().
! at com.demo.migrator.service.democlient.DemoAPIFactory.create(DemoAPIFactory.java:1)
! at com.google.inject.assistedinject.FactoryProvider2.initialize(FactoryProvider2.java:577)
! at com.google.inject.assistedinject.FactoryModuleBuilder$1.configure(FactoryModuleBuilder.java:335) (via modules: com.demo.migrator.MigrationModule -> com.google.inject.assistedinject.FactoryModuleBuilder$1)
Dưới đây là cấu hình mô-đun của tôi:
install(new FactoryModuleBuilder()
.implement(DemoAPI.class, DemoClient.class)
.build(DemoAPIFactory.class));
Sau đây là cách nhà máy của tôi trông giống như:
public interface DemoAPIFactory {
DemoAPI create(String _apiKey, String _secretKey);
}
Giao diện được khai báo như sau:
public interface DemoAPI {
//list of interface methods
}
Và đây là việc thực hiện
@Inject
public DemoClient(@Assisted String _apiKey,
@Assisted String _secretKey) {
secretKey = _secretKey;
apiKey = _apiKey;
baseURL = "xxxxx";
expirationWindow = 15;
roundUpTime = 300;
base64Encoder = new Base64();
contentType = "application/json";
}
Tôi đang sử dụng gói dropwizard Guice.
Tại sao lỗi này xảy ra?
Hi! Tôi biết bạn đã được khoảng một lúc nhưng bạn đã không hỏi nhiều câu hỏi. Không có đủ thông tin ở đây để trả lời câu hỏi của bạn; xin vui lòng đọc [hỏi]. Cụ thể, dòng cấu hình mô-đun của bạn trông ổn, nhưng chúng ta cần xem hàm tạo ** cho lớp DemoClient.class ** và ** Mã DemoAPIFactory **. Hãy sửa chúng vào câu hỏi của bạn. – durron597
Cảm ơn bạn durron, tôi đã cập nhật tất cả thông tin. – almy
Bạn có 'DemoApi' được định nghĩa ở bất kỳ nơi nào khác không? Chẳng hạn như 'bind (DemoApi.class)'? Nhìn mọi nơi trong tất cả các mô-đun của bạn, bạn chắc chắn có nó ở đâu đó. –