Aem resourceResolver.Adapter是否创建新对象或返回缓存对象
我最近遇到了一段代码,类似于:Aem resourceResolver.Adapter是否创建新对象或返回缓存对象,aem,sling,Aem,Sling,我最近遇到了一段代码,类似于: for(int i=0;i<10000;i++) { .... PageManager manager = resourceResolver.adaptTo(PageManager.class); .... } for(inti=0;i查看文档,希望它能回答您的问题 使用相同类型对该方法的每次调用是否在每次调用中生成相同的对象或新对象,将明确作为实现细节 类似问题 只是简单地解释一下 这是我们可以解析的服务API(资源是用来处理对象的
for(int i=0;i<10000;i++) {
....
PageManager manager = resourceResolver.adaptTo(PageManager.class);
....
}
for(inti=0;i查看文档,希望它能回答您的问题
使用相同类型对该方法的每次调用是否在每次调用中生成相同的对象或新对象,将明确作为实现细节
类似问题
只是简单地解释一下
这是我们可以解析的服务API(资源是用来处理对象的内容片段)
通过SlingHttpServletRequest.getResourceResolver()
方法,请求处理servlet可以使用资源解析程序。也可以通过ResourceResolverFactory
创建资源解析程序
资源解析程序通常不是线程安全的!使用该解析程序的应用程序必须提供适当的同步,以确保不超过一个线程同时对单个解析程序、资源或结果对象进行操作
ResourceResolver也是一个可用于获取其他类型适配器的工具
因此,当您通过ResourceResolver获取资源并适配到其他类型或对象的某些表示形式时,对象将是相同的。请记住,您在资源上执行的操作(在adapto()
之后)应小心,因为资源通常不是线程安全的。例如,通过使用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;
}
resourcesolver res=request.getresourcesolver();
PageManager temp=res.adapto(PageManager.class);
对于(int i=0;i<100;i++){
PageManager mgr=res.adapto(PageManager.class);
println(“对于迭代:+i+”对象是:+mgr.hashCode());
如果(临时==经理){
println(“对于迭代:+i+”对象相等”);
}
温度=经理;
}
我每次都得到相同的hashcode,而且两个引用在与==比较时返回true;因此证明它们指向同一个对象。感谢您指向该链接。但是,我无法找到PageManager类的确切实现。我尝试查找PageManagerFactory实现,但无法找到找到一个可以确认返回内容的具体类。@Ruchi是否在寻找Adapto(Pagemanager.class)示例?API中的具体实现,它可以确认是否将创建多个对象或返回同一个对象。@Ruchi您的思路正确。只需更新我的答案以提供更多信息