Guava Cacheの作成
guavaは、Googleのいくつかのjavaコアクラスライブラリの集合であり、集合、キャッシュ、オリジナルタイプ、同時、共通注釈、基本文字列操作、I/Oなどが含まれています.
この記事では、主にキャッシュ部分の使い方を説明します.この文章は主にwikiの内容と結びつけて勉強した小さな結末です.
Wikiのアドレスは次のとおりですが、fan qiangアクセスが必要です.https://code.google.com/p/guava-libraries/wiki/CachesExplained
基本的には2つの方法でcacheを作成できます.
cacheLoader
callable callback
この2つの方法で作成されたcacheは、通常mapでキャッシュされる方法と比較して、キャッシュからkey Xの値を取り、キャッシュされた場合はキャッシュ内の値を返し、キャッシュされていない場合は、ある方法でこの値を取得する論理を実現しています.
しかし,cacheloaderの定義は比較的広く,cache全体に対して定義されており,key値load valueに基づいて統一された方法と考えられる.
callableの方式は柔軟で、getの時に指定することができます.
次の2つの方法の例を示します.
まずcacheloaderに基づく方法
次に、callableを実装する方法に基づいています.
この記事では、主にキャッシュ部分の使い方を説明します.この文章は主にwikiの内容と結びつけて勉強した小さな結末です.
Wikiのアドレスは次のとおりですが、fan qiangアクセスが必要です.https://code.google.com/p/guava-libraries/wiki/CachesExplained
基本的には2つの方法でcacheを作成できます.
cacheLoader
callable callback
この2つの方法で作成されたcacheは、通常mapでキャッシュされる方法と比較して、キャッシュからkey Xの値を取り、キャッシュされた場合はキャッシュ内の値を返し、キャッシュされていない場合は、ある方法でこの値を取得する論理を実現しています.
しかし,cacheloaderの定義は比較的広く,cache全体に対して定義されており,key値load valueに基づいて統一された方法と考えられる.
callableの方式は柔軟で、getの時に指定することができます.
次の2つの方法の例を示します.
まずcacheloaderに基づく方法
@Test
public void testCacheBuilder() throws ExecutionException {
LoadingCache<String, String> graphs = CacheBuilder.newBuilder().maximumSize(1000)
.build(new CacheLoader<String, String>() {
public String load(String key) {
// key , key properties
ApplicationContext context = new FileSystemXmlApplicationContext("E:/WorkDir/struts2practice/GuavaTest/WebRoot/WEB-INF/xml/springConfig.xml");
JdbcCustomerDAO aJdbcCustomerDAO = context.getBean(JdbcCustomerDAO.class);
System.out.println("load method has been invoked");
return aJdbcCustomerDAO.findValue(key);
}
});
String resultVal = graphs.get("testKey");
System.out.println("first time value is: " + resultVal);
String resultVal1 = graphs.get("testKey");
System.out.println("second time values is: " + resultVal1);
}
次に、callableを実装する方法に基づいています.
@Test
public void testCallable() throws ExecutionException {
// CacheLoader
Cache<String, String> cache = CacheBuilder.newBuilder().maximumSize(1000).build();
String resultVal = cache.get("testKey", new Callable<String>() {
public String call() {
// key , key properties
ApplicationContext context = new FileSystemXmlApplicationContext("E:/WorkDir/struts2practice/GuavaTest/WebRoot/WEB-INF/xml/springConfig.xml");
JdbcCustomerDAO aJdbcCustomerDAO = context.getBean(JdbcCustomerDAO.class);
System.out.println("resultVal call method is invoked");
return aJdbcCustomerDAO.findValue("testKey");
}
});
System.out.println("first time value is: " + resultVal);
String resultVal1 = cache.get("testKey", new Callable<String>() {
public String call() {
// key , key properties
ApplicationContext context = new FileSystemXmlApplicationContext("E:/WorkDir/struts2practice/GuavaTest/WebRoot/WEB-INF/xml/springConfig.xml");
JdbcCustomerDAO aJdbcCustomerDAO = context.getBean(JdbcCustomerDAO.class);
System.out.println("resultVal1 call method is invoked");
return aJdbcCustomerDAO.findValue("testKey");
}
});
System.out.println("second time values is: " + resultVal1);
}