저는 Guice
을 처음 사용하고 캐싱과 관련하여 질문이 있습니다.Guice : 어떻게 데이터를 캐시 할 수 있습니까?
사용자 구성을 제공하기 위해 제공자를 사용하는 웹 애플리케이션이 있습니다. get 메소드에서
public class UserConfigurationProvider implements Provider<UserConfiguration>{
public UserConfiguration get() {
userConfigurationDatabase.getUserConfiguration(<some param here>);
}
}
, 그것은
DB
를 호출하고 매우 비싼
DB
전화를 걸 :
bind(UserConfiguration.class).toProvider(UserConfigurationProvider.class).in(ServletScopes.REQUEST);
공급자
는 다음과 같이 선언한다. 따라서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;
}
........
}
문제 I가 뷰를 전환 할 때마다 새로운 xxxxView 오브젝트가 작성되어 있는지, 따라서 새로운 UserConfiguration
가 주입되고 :
난 유사한 주입 UserConfiguration
얻을 클래스 번호를 가지고 비싼 DB
호출이 호출됩니다.
나는 사용자 로그인 당 한 번 DB
으로 전화를 걸고 싶습니다. 내 생각은 사용자가 로그인하고 사용자가 로그 아웃하거나 만료 한 후에 캐시 할 때 어딘가에 UserConfiguration
을 캐시하는 것입니다.
하지만 whehter를 알고 싶습니다. Guice
은이 유스 케이스에 대해 더 영리하게 캐싱하는 방법을 제공합니까?
감사합니다.