从 Guice 模块调用方法?
Call methods from Guice module?
因此,我需要处理一个 Guice 项目,该项目是我从之前从事该项目的开发人员那里继承的,并且我有一个特定的问题需要解决。
先简单介绍一下应用设计。
MyService.java
public static void main(String[] args) {
Injector injector = createInjector(new MyModule());
}
MyModule.java
// ...
@Inject
@Provides
@Singleton
public Client getClient(@Named("config") String config) {
// Client should be singleton
return new Client(config);
}
现在的问题是我必须编写使用 Client
的服务操作,它作为单例存在于应用程序的某处,但我不知道什么是获得的好方法它。我需要如下内容。
ServiceOperations.java
// ...
public String getData() {
// somehow obtain that client - how?
// and then call operations on the client
return client.getData();
}
如果不是 Guice,我只会有一个 ClientFactory
,然后从我的 getData()
方法中调用类似 ClientFactory.getClientInstance()
的东西,并有客户端引用,但是对于 Guice,正确的获取方式是什么?
PS。我只是在学习 Guice。谢谢!
因为您已经有了 Client
对象的提供者,所以从这里开始应该很简单:
class ServiceOperations {
@Inject
public ServiceOperations(Client client) {
this.client = client;
}
public String getData() {
return client.getData();
}
}
神奇的东西,对吧?
因此,我需要处理一个 Guice 项目,该项目是我从之前从事该项目的开发人员那里继承的,并且我有一个特定的问题需要解决。 先简单介绍一下应用设计。
MyService.java
public static void main(String[] args) {
Injector injector = createInjector(new MyModule());
}
MyModule.java
// ...
@Inject
@Provides
@Singleton
public Client getClient(@Named("config") String config) {
// Client should be singleton
return new Client(config);
}
现在的问题是我必须编写使用 Client
的服务操作,它作为单例存在于应用程序的某处,但我不知道什么是获得的好方法它。我需要如下内容。
ServiceOperations.java
// ...
public String getData() {
// somehow obtain that client - how?
// and then call operations on the client
return client.getData();
}
如果不是 Guice,我只会有一个 ClientFactory
,然后从我的 getData()
方法中调用类似 ClientFactory.getClientInstance()
的东西,并有客户端引用,但是对于 Guice,正确的获取方式是什么?
PS。我只是在学习 Guice。谢谢!
因为您已经有了 Client
对象的提供者,所以从这里开始应该很简单:
class ServiceOperations {
@Inject
public ServiceOperations(Client client) {
this.client = client;
}
public String getData() {
return client.getData();
}
}
神奇的东西,对吧?