Performance improvement: more efficient AnnotProxyFieldValueFactory cache
-------------------------------------------------------------------------

                 Key: WICKET-2344
                 URL: https://issues.apache.org/jira/browse/WICKET-2344
             Project: Wicket
          Issue Type: Improvement
          Components: wicket-spring
            Reporter: Arnout Engelen


AnnotProxyFieldValueFactory holds a cache of proxies for singleton beans. The 
cache is checked like this:

  // only check the cache if the bean is a singleton
  if (locator.isSingletonBean() && cache.containsKey(locator)) {
    return cache.get(locator);
  }

However, when the bean is referenced by type rather than by name (the default 
and common case), 'locator.isSingletonBean()' is a quite expensive operation, 
because it looks up the bean name by type (it indirectly calls 
BeanFactoryUtils.beanNamesForTypeIncludingAncestors()).

I think the call to locator.isSingletonBean() should either be omitted entirely 
(the cache only contains singleton proxies anyway), or omitted when 
annot.name() is blank.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to