我正在实现面向服务的体系结构系统。我的系统中有一些类与外部API通信,因此必须有一些方法可以在我启动程序时实例化这些类,这样每次有人发送请求时都不必实例化它们。 。我想知道Google Guice是否会有类似的东西,但到目前为止,我发现Google Guice适合选择接口的实现类,以及需要实例化。
为了使我的问题更清楚,让我们说ClassAPIUser是调用外部API的类,它是我想在开头实例化的类(static void main方法)。让我们说ClassCaller有一个ClassAPIUser字段。我想找到一种方法,以便我可以告诉我的程序从main方法(入口点)获取已经实例化的ClassAPIUser:
> public class ClassCaller {
>
> private ClassAPIUser classAPIUser;
>
> // Constructor
> public ClassCaller (ClassAPIUser classAPIUser) {
> this.classAPIUser = classAPIUser;
> }
> }
有没有办法可以使用Google Guice让ClassCaller知道classAPIUser是静态void main方法中实例化的那个?另外,我应该在静态void main方法中指定什么,以及如何在静态void main方法中实例化ClassAPIUser?
答案 0 :(得分:0)
默认情况下,Guice每次提供一个值时都会返回一个新实例。此行为可通过作用域进行配置。范围允许您重用实例:应用程序的生命周期(@Singleton),会话(@SessionScoped)或请求(@RequestScoped)。 Guice包含一个servlet扩展,用于定义Web应用程序的范围。可以为其他类型的应用程序编写自定义范围。
Singleton
就是你想要的。看看documentation。