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);
}
我正在使用 Dropwizard 0.8.1,我观察到每次调用所属路径时都会创建资源对象。
我认为这样做是因为在启动应用程序时 class 注册了资源。
有没有强制资源为单例的?
我曾尝试使用 @Singleton
和 @LazySingleton
(通过 Governator),但似乎不起作用。我该如何解决这个问题?
当您将绑定指定为 class 注释时,Guice 将覆盖绑定。 Documentation:
If there's conflicting scopes on a type and in a
bind()
statement, thebind()
statement's scope will be used. If a type is annotated with a scope that you don't want, bind it toScopes.NO_SCOPE
.
您可以通过在 Module
的绑定中指定 Singleton 来解决此问题,例如
protected void configure() {
bind(Foo.class).toProvider(FooProvider.class).in(Singleton.class);
}