Я новичок в Guice
и задаюсь вопросом о кешировании.Guice: Как я могу кэшировать данные
У меня есть WebApp, который использует провайдера для предоставления пользовательских конфигураций.
bind(UserConfiguration.class).toProvider(UserConfigurationProvider.class).in(ServletScopes.REQUEST);
Поставщик объявлен как:
public class UserConfigurationProvider implements Provider<UserConfiguration>{
public UserConfiguration get() {
userConfigurationDatabase.getUserConfiguration(<some param here>);
}
}
В методе GET, он вызывает DB
и сделать очень дорогой DB
вызов.
У меня есть несколько классов, которые получают UserConfiguration
впрыскивается как:
public class PriceView {
private UserConfiguration userConfiguration;
@Inject
public MyClass(UserConguration userConfiguration){
this.userConfiguration = userConfiguration;
}
.....
}
public class OrderView {
private UserConfiguration userConfiguration;
@Inject
public MyClass(UserConguration userConfiguration){
this.userConfiguration = userConfiguration;
}
........
}
Проблема заключается в том, что каждый раз, когда я включаю вид, новый объект xxxxView создается и, следовательно, новая UserConfiguration
впрыскивается и, следовательно, дорогой DB
вызывается.
Я хочу позвонить по телефону DB
, ограниченному один раз для входа пользователя. Моя идея заключается в том, что кеш UserConfiguration
где-то, когда пользователь входит в систему и очищает его после выхода пользователя из системы или истекает.
Но я хочу знать, что whehter Guice
предлагает что-то более умные способы кеширования об этом случае использования?
Большое спасибо.