Thanks for your insight, Patrick. But I'm stuck in my dumbness: "setting the component's fields" -- does this mean a new instance of that particular annotated bean is created, or that singleton is accessed somehow (proxy)? Also, it's not the injected beans that are null, it's their dependencies, and I assume that is because new instances of those beans are created.
On Wed, Feb 18, 2009 at 9:13 AM, Patrick Angeles <patr...@inertiabev.com>wrote: > > > 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: users-unsubscr...@wicket.apache.org > For additional commands, e-mail: users-h...@wicket.apache.org > > -- sp