you can follow the progress here

https://issues.apache.org/jira/browse/WICKET-2741

-igor

On Tue, Feb 16, 2010 at 8:24 AM,  <[email protected]> wrote:
> Any updates on this issue?  Will there be a fix?
>
>
>
>
> Igor Vaynberg <[email protected]>
> 02/10/2010 06:15 PM
> Please respond to
> [email protected]
>
>
> To
> [email protected]
> cc
>
> Subject
> Re: @SpringBean injection expensive - a bug?
>
>
>
>
>
>
> create a jira issue and a quickstart. thanks.
>
> -igor
>
> On Tue, Feb 9, 2010 at 11:34 AM, Nikita Tovstoles
> <[email protected]> wrote:
>> Wicket's SpringWebApplication is deprecated and the javadoc advocates
>> using @SpringBean to inject dependencies at component level. However,
>> that appears to be an expensive proposition:
>>
>> I have a listView component that renders a (new) ExternalLink subclass
>> per item. That subclass uses a service (a singleton spring bean)
>> injected via @SpringBean like so:
>>
>> @SpringBean
>> private MyService service;
>>
>> YourKit tells me that when the page is being rendered, 47%(!) of cpu
>> time is being spent constructing the subclass, specifically,
>> repeatedly calling:
>>
> org.springframework.beans.factory.BeanFactoryUtils.beanNamesForTypeIncludingAncestors(ListableBeanFactory,
>> Class)
>>
>> The above is getting called with vigor from
>> SpringBeanLocator.hashCode() --> getBeanName() -->
>> getBeanNameOfClass(). HashCode() is likely getting called most often
>> by AnnotProxyFieldValueFactory.cache during look-ups - which I am
>> guessing isn't intentional. Looks like a bug, no?
>>
>> If the above is a bug indeed, is the workaround to always specify a
>> 'name' with @SpringBean?
>>
>> Thoughts?
>> -nikita
>>
> +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------+-----------------+
>> |
>>             Name
>>                             |   Time (ms)    |  Own Time (ms)  |
>>
> +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------+-----------------+
>> |
>  +---com.castanealabs.gui.component.search.CategoryDataViewPanel$1.populateItem(Item)
>>
>>            |  5,430  100 %  |             50  |
>> |    |
>>
>>                             |                |                 |
>> |
>  +---com.castanealabs.gui.component.search.ProductImageCell.<init>(String,
>> SiteId, IModel)
>>                     |  2,680   49 %  |             20  |
>> |    | |
>>
>>                             |                |                 |
>> |    |
> +---com.castanealabs.gui.embedded.ExternalSiteProductInfoLink.<init>(String,
>> SiteId, IModel)
>>                |  2,660   49 %  |              0  |
>> |    |   |
>>
>>                             |                |                 |
>> |    |
> +---com.castanealabs.gui.embedded.ExternalSiteProductInfoLink.<init>(String,
>> SiteId, IModel, IModel)
>>              |  2,660   49 %  |              0  |
>> |    |     |
>>
>>                             |                |                 |
>> |    |
> +---com.castanealabs.gui.embedded.TargetedExternalLink.<init>(String,
>> IModel, IModel, String)
>>                   |  2,570   47 %  |              0  |
>> |    |     | |
>>
>>                             |                |                 |
>> |    |     |
> +---org.apache.wicket.markup.html.link.ExternalLink.<init>(String,
>> IModel, IModel)
>>                    |  2,570   47 %  |              0  |
>> |    |     |   |
>>
>>                             |                |                 |
>> |    |     |
> +---org.springframework.beans.factory.BeanFactoryUtils.beanNamesForTypeIncludingAncestors(ListableBeanFactory,
>> Class)                                      |  2,570   47 %  |
>>      0  |
>> |    |     |     |
>>
>>                             |                |                 |
>> |    |     |
>>
> +---org.springframework.context.support.AbstractApplicationContext.getBeanNamesForType(Class)
>>                                                            |  2,570
>> 47 %  |              0  |
>> |    |     |       |
>>
>>                             |                |                 |
>> |    |     |
>>
> +---org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanNamesForType(Class)
>>                                                    |  2,570   47 %  |
>>            10  |
>> |    |     |         |
>>
>>                             |                |                 |
>> |    |     |
>>
> +---org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanNamesForType(Class,
>> boolean, boolean)                                |  2,560   47 %  |
>>           0  |
>> |    |     |           |
>>
>>                             |                |                 |
>> |    |     |
>>
> +---org.springframework.beans.factory.support.AbstractBeanFactory.isFactoryBean(String,
>> RootBeanDefinition)                                        |  2,460
>> 45 %  |             10  |
>> |    |     |           | |
>>
>>                             |                |                 |
>> |    |     |           |
>>
> +---org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.predictBeanType(String,
>> RootBeanDefinition, Class[])            |  2,420   45 %  |
>> 100  |
>> |    |     |           | | |
>>
>>                             |                |                 |
>> |    |     |           | |
>>
> +---org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.getTypeForFactoryMethod(String,
>> RootBeanDefinition, Class[])  |  1,750   32 %  |              0  |
>> |    |     |           | | | |
>>
>>                             |                |                 |
>> |    |     |           | | |
>>
> +---org.springframework.util.ReflectionUtils.getAllDeclaredMethods(Class)
>>                                                                    |
>> 1,490   27 %  |             20  |
>> |    |     |           | | | | |
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: [email protected]
>> For additional commands, e-mail: [email protected]
>>
>>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [email protected]
> For additional commands, e-mail: [email protected]
>
>
>
>
>
>
> Notice: This communication, including any attachments, is intended solely
> for the use of the individual or entity to which it is addressed. This
> communication may contain information that is protected from disclosure
> under State and/or Federal law. Please notify the sender immediately if
> you have received this communication in error and delete this email from
> your system. If you are not the intended recipient, you are requested not
> to disclose, copy, distribute or take any action in reliance on the
> contents of this information.

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to