如何使用Google Guice在开始时实例化一个类

时间:2017-07-30 00:57:29

标签: java dependency-injection guice soa

我正在实现面向服务的体系结构系统。我的系统中有一些类与外部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?

1 个答案:

答案 0 :(得分:0)

  

默认情况下,Guice每次提供一个值时都会返回一个新实例。此行为可通过作用域进行配置。范围允许您重用实例:应用程序的生命周期(@Singleton),会话(@SessionScoped)或请求(@RequestScoped)。 Guice包含一个servlet扩展,用于定义Web应用程序的范围。可以为其他类型的应用程序编写自定义范围。

Singleton就是你想要的。看看documentation