0

私はキャッシングが初めてで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しかし、このユースケースについてもっと巧妙なキャッシュ方法を提供するかどうかを知りたいですか?

どうもありがとう。

4

1 に答える 1