Re: Spring annotations fail to inject into webmodels
My abstract basewebmodel constructor from which all my webmodels inherit marks inself for Spring injection but still no injection takes place. Any suggestions where I can look? Can I run the injection in the constructor of an abstract model from which I inherit all my webmodels? I cannot see why not? Thanks in advanced. P BaseWebModel.java = ... public BaseWebModel(Long id) { this.id = id; InjectorHolder.getInjector().inject(this); } here is an example of my TemplateWebModel that uses @SpringBean to set TemplateFactory TemplateWebModel.java === ... @SpringBean(name=TemplateFactory) private TemplateFactory templateFactory; public TemplateWebModel(Template template) { super(template); } P On Fri, Sep 11, 2009 at 10:42 AM, jWeekend jweekend_for...@cabouge.comwrote: Pieter, If you want to use Spring's @Configuarble you'll need to enable Load Time Weaving or Complie Time Weaving. To use @SpringBean with an object that is not a Wicket Component you need to InjectorHolder.getInjector().inject(this) on initialisation of your object. The benefit of the latter approach is that you do not need to introduce weaving and that Wicket will make sure you have a serialisable proxy injected. Regards - Cemal jWeekend OO Java Technologies, Wicket Training and Development http://jWeekend.com Pieter Claassen wrote: I am using maven, spring 2.5.6, wicket 1.4 and am trying to inject my DAO's into my wicket models but I find that Spring just ignores my advice. My question: 1. @SpringBean only works on stuff that inherits from Component. What do I do with things like session and models that don't? I am trying to use @Configurable but that is being ignored. 2. My POM deps are below. What should I pull in to have @Configurable working? 3. BTW. When I comment the bean out of my XML config, then I do get an error so I am not sure if I am doing something very small wrong? Thanks. Pieter pom.xml === ... dependency groupIdorg.springframework/groupId artifactIdspring-core/artifactId version${spring.version}/version /dependency dependency groupIdorg.apache.wicket/groupId artifactIdwicket-spring/artifactId version${wicket.version}/version !--Same results whether I include or exclude the next session-- exclusions exclusion groupIdorg.springframework/groupId artifactIdspring/artifactId /exclusion /exclusions /dependency TemplateWebModel.java == . @Configurable public class TemplateWebModel extends AbstractDataSetWebModelTemplate { private TemplateFactory templateFactory; public TemplateFactory getTemplateFactory() { return templateFactory; } public void setTemplateFactory(TemplateFactory templateFactory) { throw new RuntimeException(REACHED TEMPLATE FACTORY SET); //This setter is never run //this.templateFactory = templateFactory; } . WicketApplicationDefinitition.xml == ?xml version=1.0 encoding=UTF-8? beans xmlns=http://www.springframework.org/schema/beans; xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance; xmlns:context=http://www.springframework.org/schema/context; xsi:schemaLocation= http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd; context:annotation-config/ !--aop:aspectj-autoproxy/-- !-- a bean that supplies my primary application database client -- bean id=appDataSource class=com.musmato.dao.ApplicationDBFactory destroy-method=close constructor-arg ref bean=appConfig / /constructor-arg /bean !-- a bean that supplies a network database client for template uploads -- bean id=rootDataSource class=com.musmato.dao.RootDBFactory destroy-method=close constructor-arg ref bean=appConfig / /constructor-arg /bean . bean id=TemplateFactory class=com.musmato.dao.TemplateFactory property name=client ref=appDataSource / /bean -- Pieter Claassen musmato.com -- View this message in context: http://www.nabble.com/Spring-annotations-fail-to-inject-into-webmodels-tp25396625p25397205.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 -- Pieter
Re: Spring annotations fail to inject into webmodels
Did you add the listener to your spring context ? bean id=wicketInstantiationListener class=org.apache.wicket.injection.ComponentInjector/ On 12 sep 2009, at 11:53, pieter claassen wrote: My abstract basewebmodel constructor from which all my webmodels inherit marks inself for Spring injection but still no injection takes place. Any suggestions where I can look? Can I run the injection in the constructor of an abstract model from which I inherit all my webmodels? I cannot see why not? Thanks in advanced. P BaseWebModel.java = ... public BaseWebModel(Long id) { this.id = id; InjectorHolder.getInjector().inject(this); } here is an example of my TemplateWebModel that uses @SpringBean to set TemplateFactory TemplateWebModel.java === ... @SpringBean(name=TemplateFactory) private TemplateFactory templateFactory; public TemplateWebModel(Template template) { super(template); } P On Fri, Sep 11, 2009 at 10:42 AM, jWeekend jweekend_for...@cabouge.com wrote: Pieter, If you want to use Spring's @Configuarble you'll need to enable Load Time Weaving or Complie Time Weaving. To use @SpringBean with an object that is not a Wicket Component you need to InjectorHolder.getInjector().inject(this) on initialisation of your object. The benefit of the latter approach is that you do not need to introduce weaving and that Wicket will make sure you have a serialisable proxy injected. Regards - Cemal jWeekend OO Java Technologies, Wicket Training and Development http://jWeekend.com Pieter Claassen wrote: I am using maven, spring 2.5.6, wicket 1.4 and am trying to inject my DAO's into my wicket models but I find that Spring just ignores my advice. My question: 1. @SpringBean only works on stuff that inherits from Component. What do I do with things like session and models that don't? I am trying to use @Configurable but that is being ignored. 2. My POM deps are below. What should I pull in to have @Configurable working? 3. BTW. When I comment the bean out of my XML config, then I do get an error so I am not sure if I am doing something very small wrong? Thanks. Pieter pom.xml === ... dependency groupIdorg.springframework/groupId artifactIdspring-core/artifactId version${spring.version}/version /dependency dependency groupIdorg.apache.wicket/groupId artifactIdwicket-spring/artifactId version${wicket.version}/version !--Same results whether I include or exclude the next session-- exclusions exclusion groupIdorg.springframework/groupId artifactIdspring/artifactId /exclusion /exclusions /dependency TemplateWebModel.java == . @Configurable public class TemplateWebModel extends AbstractDataSetWebModelTemplate { private TemplateFactory templateFactory; public TemplateFactory getTemplateFactory() { return templateFactory; } public void setTemplateFactory(TemplateFactory templateFactory) { throw new RuntimeException(REACHED TEMPLATE FACTORY SET); //This setter is never run //this.templateFactory = templateFactory; } . WicketApplicationDefinitition.xml == ?xml version=1.0 encoding=UTF-8? beans xmlns=http://www.springframework.org/schema/beans; xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance; xmlns:context=http://www.springframework.org/schema/context xsi:schemaLocation= http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring- context-2.5.xsd context:annotation-config/ !--aop:aspectj-autoproxy/-- !-- a bean that supplies my primary application database client -- bean id=appDataSource class=com.musmato.dao.ApplicationDBFactory destroy-method=close constructor-arg ref bean=appConfig / /constructor-arg /bean !-- a bean that supplies a network database client for template uploads -- bean id=rootDataSource class=com.musmato.dao.RootDBFactory destroy-method=close constructor-arg ref bean=appConfig / /constructor-arg /bean . bean id=TemplateFactory class=com.musmato.dao.TemplateFactory property name=client ref=appDataSource / /bean -- Pieter Claassen musmato.com -- View this message in context: http://www.nabble.com/Spring-annotations-fail-to-inject-into-webmodels-tp25396625p25397205.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 -- Pieter Claassen
Re: Spring annotations fail to inject into webmodels
Pieter, ... if you're not injecting into components anywhere in your application you naturally should be able to skip registering the ComponentInstatiationListener. Regards - Cemal jWeekend OO Java Technologies, Wicket Training and Development http://jWeekend.com jWeekend wrote: Pieter, Have you set up Spring's ContextLoaderListener (a Servlet listener that initiates your Spring context) and registered the Spring SpringComponentInjector as a Component instantiaition listener [1]? Your idea to instigate injection in the super classes constructor is fine as this will be the concrete subclass that you are instantiating - make sure the right super constructor is called in all places you want injection to take place, and also that you are not initialising the sub-classes injected properties as that would take place after the super class is initialised undoing what the super class constructor has done. Finally, in a case like this, get the simplest possible scenario working first (here, try injecting into the subclass directly) to show you have everything set up correctly and then try the conceptually slightly more complex solution of pushing-up the responsibility to instigate injection for all your models into their common, abstract superclass. Also, notice that this injector goes straight to your fields, even if they're private, so your setters not being called alone does not mean injection has not succeeded Does that make sense? Regards - Cemal jWeekend OO Java Technologies, Wicket Training and Development http://jWeekend.com [1] http://cwiki.apache.org/WICKET/spring.html pieter claassen-2 wrote: My abstract basewebmodel constructor from which all my webmodels inherit marks inself for Spring injection but still no injection takes place. Any suggestions where I can look? Can I run the injection in the constructor of an abstract model from which I inherit all my webmodels? I cannot see why not? Thanks in advanced. P BaseWebModel.java = ... public BaseWebModel(Long id) { this.id = id; InjectorHolder.getInjector().inject(this); } here is an example of my TemplateWebModel that uses @SpringBean to set TemplateFactory TemplateWebModel.java === ... @SpringBean(name=TemplateFactory) private TemplateFactory templateFactory; public TemplateWebModel(Template template) { super(template); } P On Fri, Sep 11, 2009 at 10:42 AM, jWeekend jweekend_for...@cabouge.comwrote: Pieter, If you want to use Spring's @Configuarble you'll need to enable Load Time Weaving or Complie Time Weaving. To use @SpringBean with an object that is not a Wicket Component you need to InjectorHolder.getInjector().inject(this) on initialisation of your object. The benefit of the latter approach is that you do not need to introduce weaving and that Wicket will make sure you have a serialisable proxy injected. Regards - Cemal jWeekend OO Java Technologies, Wicket Training and Development http://jWeekend.com Pieter Claassen wrote: I am using maven, spring 2.5.6, wicket 1.4 and am trying to inject my DAO's into my wicket models but I find that Spring just ignores my advice. My question: 1. @SpringBean only works on stuff that inherits from Component. What do I do with things like session and models that don't? I am trying to use @Configurable but that is being ignored. 2. My POM deps are below. What should I pull in to have @Configurable working? 3. BTW. When I comment the bean out of my XML config, then I do get an error so I am not sure if I am doing something very small wrong? Thanks. Pieter pom.xml === ... dependency groupIdorg.springframework/groupId artifactIdspring-core/artifactId version${spring.version}/version /dependency dependency groupIdorg.apache.wicket/groupId artifactIdwicket-spring/artifactId version${wicket.version}/version !--Same results whether I include or exclude the next session-- exclusions exclusion groupIdorg.springframework/groupId artifactIdspring/artifactId /exclusion /exclusions /dependency TemplateWebModel.java == . @Configurable public class TemplateWebModel extends AbstractDataSetWebModelTemplate { private TemplateFactory templateFactory; public TemplateFactory getTemplateFactory() { return templateFactory; } public void setTemplateFactory(TemplateFactory templateFactory) { throw new RuntimeException(REACHED TEMPLATE FACTORY SET); //This setter is never run //this.templateFactory = templateFactory; } . WicketApplicationDefinitition.xml
Re: Spring annotations fail to inject into webmodels
Pieter, If you want to use Spring's @Configuarble you'll need to enable Load Time Weaving or Complie Time Weaving. To use @SpringBean with an object that is not a Wicket Component you need to InjectorHolder.getInjector().inject(this) on initialisation of your object. The benefit of the latter approach is that you do not need to introduce weaving and that Wicket will make sure you have a serialisable proxy injected. Regards - Cemal jWeekend OO Java Technologies, Wicket Training and Development http://jWeekend.com Pieter Claassen wrote: I am using maven, spring 2.5.6, wicket 1.4 and am trying to inject my DAO's into my wicket models but I find that Spring just ignores my advice. My question: 1. @SpringBean only works on stuff that inherits from Component. What do I do with things like session and models that don't? I am trying to use @Configurable but that is being ignored. 2. My POM deps are below. What should I pull in to have @Configurable working? 3. BTW. When I comment the bean out of my XML config, then I do get an error so I am not sure if I am doing something very small wrong? Thanks. Pieter pom.xml === ... dependency groupIdorg.springframework/groupId artifactIdspring-core/artifactId version${spring.version}/version /dependency dependency groupIdorg.apache.wicket/groupId artifactIdwicket-spring/artifactId version${wicket.version}/version !--Same results whether I include or exclude the next session-- exclusions exclusion groupIdorg.springframework/groupId artifactIdspring/artifactId /exclusion /exclusions /dependency TemplateWebModel.java == . @Configurable public class TemplateWebModel extends AbstractDataSetWebModelTemplate { private TemplateFactory templateFactory; public TemplateFactory getTemplateFactory() { return templateFactory; } public void setTemplateFactory(TemplateFactory templateFactory) { throw new RuntimeException(REACHED TEMPLATE FACTORY SET); //This setter is never run //this.templateFactory = templateFactory; } . WicketApplicationDefinitition.xml == ?xml version=1.0 encoding=UTF-8? beans xmlns=http://www.springframework.org/schema/beans; xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance; xmlns:context=http://www.springframework.org/schema/context; xsi:schemaLocation= http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd; context:annotation-config/ !--aop:aspectj-autoproxy/-- !-- a bean that supplies my primary application database client -- bean id=appDataSource class=com.musmato.dao.ApplicationDBFactory destroy-method=close constructor-arg ref bean=appConfig / /constructor-arg /bean !-- a bean that supplies a network database client for template uploads -- bean id=rootDataSource class=com.musmato.dao.RootDBFactory destroy-method=close constructor-arg ref bean=appConfig / /constructor-arg /bean . bean id=TemplateFactory class=com.musmato.dao.TemplateFactory property name=client ref=appDataSource / /bean -- Pieter Claassen musmato.com -- View this message in context: http://www.nabble.com/Spring-annotations-fail-to-inject-into-webmodels-tp25396625p25397205.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