私はキャッシングが初めてで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
ユーザーログインごとに1回の呼び出しに制限したい。私の考えはUserConfiguration
、ユーザーがログインしたときにどこかにキャッシュし、ユーザーのログアウトまたは有効期限が切れた後にそれをクリアすることです。
Guice
しかし、このユースケースについてもっと巧妙なキャッシュ方法を提供するかどうかを知りたいですか?
どうもありがとう。