2017-02-02 17 views
1

Недавно я наткнулся на кусок кода, который является чем-то вроде:ли resourceResolver.adaptTo создать новый объект или возвращать кэшированные объект

for(int i=0;i<10000;i++) { 
    .... 
    PageManager manager = resourceResolver.adaptTo(PageManager.class); 
    .... 
} 

Означает ли это, 10000 объектов Pagemanager будет создана или мы получаем один и тот же объект каждый раз?

Благодаря

ответ

1

Посмотрите документацию Adaptable надеюсь, что ответ на ваш вопрос

он явно остается в качестве детали реализации дает ли каждый вызов этого метода с тем же типом и тот же объект или новый объект для каждого вызова.

AdaptTo

подобный вопрос purpose-of-resourceresolver-adapttosession

Просто объяснить простой

  1. The ResourceResolver является сервис API, который мы можем разрешить Resource (Ресурсы являются частями содержания, на которых Sling act).
  2. Решатель ресурсов доступен для сервлета обработки запроса через метод SlingHttpServletRequest.getResourceResolver(). Решатель ресурсов можно также создать через ResourceResolverFactory.
  3. ResourceResolver, как правило, не является потокобезопасным! приложение, которое использует резольвер, должно обеспечить надлежащую синхронизацию, чтобы гарантировать, что не более одного потока одновременно работает против одного преобразователя, ресурса или результирующих объектов.
  4. ResourceResolver также является адаптируемым для получения адаптеров для других типов.

Итак, когда вы получаете ресурс ResourceResolver и адаптируете к другим типам или некоторым представлениям объекта, объект будет таким же. Помните, что операции, которые вы выполняете на ресурсе (после adaptTO()), должны быть учтены, поскольку ресурс, как правило, не является потокобезопасным. Пример: преобразователь обновлен, чтобы отразить последнее состояние, используя метод refresh() и т. Д.

+0

Благодарим за указание на эту ссылку. Тем не менее, я не могу найти точную реализацию для класса PageManager. Я попытался изучить реализацию PageManagerFactory, но не смог найти конкретный класс, который мог бы подтвердить, что будет возвращено. – Ruchi

+0

@Ruchi Вы ищете пример adaptoTo (Pagemanager.class)? – VAr

+0

конкретная реализация в API, которая может подтвердить, будут ли созданы несколько объектов или же один объект будет возвращен. – Ruchi

0

Ok.

Я не мог найти конкретную реализацию в 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; 
    } 

я получил тот же Hashcode eachtime, а также две ссылки возвращенного верно по сравнению с ==; следовательно, они указывали на один и тот же объект.

 Смежные вопросы

  • Нет связанных вопросов^_^