To answer your question, yes spring beans are singleton by default. The
@SpringBean annotation works roughly like this: in your Application class,
you set a ComponentInstantiationListener which gets called every time a
Wicket page/component is instantiated. The particular listener that gets set
(SpringComponentInjector) takes care of setting the component's fields that
are annotated with @SpringBean with the appropriate beans found in the
spring context.

My guess is that the Listener isn't being configured properly, and that is
why your @SpringBeans are null...



Sergey Podatelev wrote:
> 
> Okay, this question might actually be more related to Spring, but I'm
> completely lost here, and my question on Spring forums usually don't get
> any
> replies, so I hope Wicket community might help as it usually does.
> 
> I'm using JCR, and have a RepositoryDao bean configured in
> applicationContext.xml.
> RepositoryDao has a "template" property which points to an instance of
> JcrTemplate in applicationContext.xml, all repository access is performed
> through that template.
> 
> I have an AccessPage which has a RepositoryDao injected via @SpringBean.
> There is an inner class Form on that page, it has a default submit button
> and three submit buttons that skip default processing and perform their
> own
> operations onSubmit(). Both default button and skip-default-processing
> buttons use the same repositoryDao property of AccessPage to perform
> certain
> operations on repository.
> 
> I noticed that when I actually open that AccessPage, there's a new
> RepositoryDao object created, and it's "template" property is null. When I
> press any of those non-default submit buttons of the form, everything
> works
> fine. But on default button onSubmit(), I see that there's yet another
> insance of RepositoryDao created, and it's "template" is also null, which
> leads to NullPointerException.
> 
> I assumed that beans configured in applicationContext.xml are actually
> singletons, so there won't be any new instances of such nodes upon
> pages-with-injections instantiation.
> 
> Regardless of whether that assumption is correct/incorrect/my-god-rtfm, I
> still won't understand why default submit button reaction is NPE as it
> uses
> same partnershipDao property of AccessPage.
> 
> Could someone please elaborate some internal differences of the
> annotation-based approach as opposed to storing DAOs in Application
> object.
> In the latter case it's quite clear that there's a single instance of
> RepositoryDao as a property of MyApplication which is pulled on
> ((MyApplication) Application.get()).getRepositoryDao().
> 
> Thanks.
> 
> -- 
> sp
> 
> 

-- 
View this message in context: 
http://www.nabble.com/%40SpringBean-vs-getApplication%28%29.getDao%28%29-tp22061472p22072806.html
Sent from the Wicket - User mailing list archive at Nabble.com.


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

Reply via email to