Có điều tôi không hiểu về guice: Theo những gì tôi đã đọc cho đến nay, tôi chỉ nên sử dụng Injector trong lớp bootstrapping của mình (trong một ứng dụng độc lập, nó thường nằm trong main() phương pháp), như trong ví dụ bên dưới (lấy từ tài liệu guice):Làm thế nào để tránh có injector.createInstance() trên khắp nơi khi sử dụng guice?
public static void main(String[] args) {
/*
* Guice.createInjector() takes your Modules, and returns a new Injector
* instance. Most applications will call this method exactly once, in their
* main() method.
*/
Injector injector = Guice.createInjector(new BillingModule());
/*
* Now that we've got the injector, we can build objects.
*/
RealBillingService billingService = injector.getInstance(RealBillingService.class);
...
}
Nhưng nếu không phải tất cả các đối tượng tôi cần có thể được tạo trong khi khởi động thì sao? Có lẽ tôi muốn trả lời một số tương tác của người dùng khi ứng dụng đang chạy? Tôi không phải giữ cho vòi phun của tôi xung quanh một nơi nào đó (ví dụ như một biến tĩnh) và sau đó gọi injector.getInstance (SomeInterface.class) khi tôi cần phải tạo một đối tượng mới?
Tất nhiên, việc chuyển các cuộc gọi đến Injector.getInstance() trên toàn bộ địa điểm có vẻ không đáng mong muốn.
Tôi đang gặp vấn đề gì ở đây?
Có, tôi hoàn toàn đồng ý với điều đó. – Gamlor