Dropwizard 0.8 和 GuiceBundle Governator:强制资源 class 成为单例

Dropwizard 0.8 and GuiceBundle Governator: Forcing Resources class to be Singleton

我正在使用 Dropwizard 0.8.1,我观察到每次调用所属路径时都会创建资源对象。

我认为这样做是因为在启动应用程序时 class 注册了资源。

有没有强制资源为单例的?

我曾尝试使用 @Singleton@LazySingleton(通过 Governator),但似乎不起作用。我该如何解决这个问题?

当您将绑定指定为 class 注释时,Guice 将覆盖绑定。 Documentation:

If there's conflicting scopes on a type and in a bind() statement, the bind() statement's scope will be used. If a type is annotated with a scope that you don't want, bind it to Scopes.NO_SCOPE.

您可以通过在 Module 的绑定中指定 Singleton 来解决此问题,例如

protected void configure() {
    bind(Foo.class).toProvider(FooProvider.class).in(Singleton.class);
}