[英]Guice binding based on annotation value
我的用例是這樣的。 我的系統已經有一個配置系統,我們在一個文本文件中添加配置,類似於屬性文件,但不完全一樣。 我想重用相同的配置系統。 配置系統提供了這個接口:
public interface ConfigurationProvider {
Boolean getBoolean(String key);
String getString(String key);
Long getLong(String key);
...
}
我想使用 @Named 注釋來獲取注入的配置值,例如:
public ClassA {
String stringVal;
Long longVal;
@Inject
public ClassA(@Named("some_str_val" String strVal, @Named("some_long_val") Long longVal)) {
stringVal = strVal;
longVal = longVal;
}
}
我不確定如何根據注釋值進行綁定。
class MyConfigModule extends AbstractModule {
ConfigurationProvider configProvider;
MyConfigModule(ConfigurationProvider configProvider) {
configProvider = configProvider;
}
public void configure() {
// Here, I would want to bind String annotated with Named to getString(annotation.value), but not sure how to do that
}
}
就像是
bind(String.class).annotatedWith(Names.named("property.name")).toInstance(configProvider.getString("property.name"));
你可以喜歡它,或者只是手動添加你希望在那里的每個屬性。 如果您的configProvider
可以遍歷字段,則可能會更容易。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.