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]
