我最近碰到一段代碼是這樣的:是否resourceResolver.adaptTo創建新對象或返回緩存的對象
for(int i=0;i<10000;i++) {
....
PageManager manager = resourceResolver.adaptTo(PageManager.class);
....
}
這是否意味着10000米PageManager中的物體將被創建還是我們得到每次都是同一個對象?
感謝
我最近碰到一段代碼是這樣的:是否resourceResolver.adaptTo創建新對象或返回緩存的對象
for(int i=0;i<10000;i++) {
....
PageManager manager = resourceResolver.adaptTo(PageManager.class);
....
}
這是否意味着10000米PageManager中的物體將被創建還是我們得到每次都是同一個對象?
感謝
看一看在Adaptable文檔,希望它回答你的問題
它明確地留給實現細節每次調用此方法與同類型是否得到相同的物體或每次通話都有一個新對象。
類似的問題purpose-of-resourceresolver-adapttosession
只是爲了簡單
SlingHttpServletRequest.getResourceResolver()
方法,資源解析器可用於請求處理servlet。資源解析器也可以通過ResourceResolverFactory
創建。所以當你通過ResourceResolver和adaptTo獲取資源的其他類型或對象的某些表示時,對象將是相同的。請記住,在資源上執行的操作(在adaptTO()
之後)應該注意,因爲該資源通常不是線程安全的。示例解析器通過使用refresh()
方法等更新以反映最新狀態。
好的。
我找不到API的具體實現,但我寫了這個示例代碼進行測試:
ResourceResolver res = request.getResourceResolver();
PageManager temp = res.adaptTo(PageManager.class);
for (int i=0; i < 100; i++) {
PageManager mgr = res.adaptTo(PageManager.class);
out.println("For iteration: " + i + " The object is: " + mgr.hashCode());
if (temp == mgr) {
out.println("For iteration: " + i + " the objects are equal");
}
temp = mgr;
}
我得到了相同的哈希碼eachtime,也是兩個引用與==比較返回了true;因此證明他們指向同一個對象。
感謝您指向該鏈接。但是,我無法找到PageManager類的確切實現。我試着查看PageManagerFactory實現,但找不到具體的類來確認將返回的內容。 – Ruchi
@Ruchi您是否在尋找adaptoTo(Pagemanager.class)的例子? – VAr
API中的具體實現,可以確認是否創建多個對象或返回相同的對象。 – Ruchi