我是新手,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
在用户登录时缓存某处并在用户注销或过期后清除它。
但我想知道是否Guice
提供了一些更聪明的方法来缓存这个用例?
非常感谢。