我想做这样的装订,
bind(Supplier<TestClass>).toProvider(Provider<Supplier<TestClass>>).in(Singleton.class);
提供程序由外部函数返回,因此 toProvider()
,我调用该函数,它返回provider <Supplier<TestClass>>
.
供应商来自guava,这样做的原因是,有一个与testclass相关联的文件,我需要读取该文件并将这些值赋给testclass的相应字段。
文件在运行时会发生更改,所以我需要一种方法来刷新testclass中存储的值。做我用过的Guava供应商。guava供应商有一个get方法,当调用该get方法时,如果我使用 memoizeWithExpiration()
为了创建示例,它检查ttl值,如果传递了,那么我可以指定lambda函数来读取文件并赋值。
所以我需要注射 Supplier<TestClass>
这样地
@Inject
Supplier<TestClass> someClassSupplier;
但是用guice绑定对我来说很混乱。
1条答案
按热度按时间tktrz96b1#
可以使用以下类型的代码执行所需操作:
然后,在你的课堂上:
你要求一个通用的方法来做这件事,所以在这里,检查
bindSupplier
方法: