如何使用 Google Guice 在开头实例化一个 class

How to use Google Guice to instantiate a class at the start

我正在实施面向服务的体系结构系统。我的系统中有一些 classes 与外部 API 对话,所以必须有一些方法可以在我启动我的程序时实例化这些 classes,这样他们就不会每次有人发送请求时都必须实例化。我想知道 Google Guice 是否会有类似的东西,但到目前为止我发现 Google Guice 非常适合为接口选择实现 class,以及按需实例化。

为了让我的问题更清楚,假设ClassAPI用户是调用外部API的class,它是class 我想在开始时实例化(static void main 方法)。假设 ClassCaller 有一个字段 ClassAPIUser。我想找到一种方法,以便我可以告诉我的程序从主方法(入口点)获取已经实例化的 ClassAPIUser :

> public class ClassCaller {
> 
>   private ClassAPIUser classAPIUser;
> 
>   // Constructor
>   public ClassCaller (ClassAPIUser classAPIUser) {
>      this.classAPIUser = classAPIUser;
>   }
> }

有没有一种方法可以使用 Google Guice 让 ClassCaller 知道 classAPIUser 是在 static void main 方法中实例化的那个?另外,我应该在 static void main 方法中指定什么以及我应该如何在 static void main 方法中实例化 ClassAPIUser?

By default, Guice returns a new instance each time it supplies a value. This behaviour is configurable via scopes. Scopes allow you to reuse instances: for the lifetime of an application (@Singleton), a session (@SessionScoped), or a request (@RequestScoped). Guice includes a servlet extension that defines scopes for web apps. Custom scopes can be written for other types of applications.

Singleton就是你想要的。看看 documentation.