You can "de-autowire" an action by creating an XML configuration for it.  
Then you can use the spring name instead of the class in the action config

<bean id="myAction" class="com.actions.MyAction">
    <property name="myManager" ref="userService"/>
</bean>
<bean id="myOtherAction" class="com.actions.MyAction">
    <property name="myManager" ref="otherUserService"/>
</bean>

struts.xml
<action name="something" class="myAction">...</action>

<action name="somethingElse" class="myOtherAction">...</action>

That way you get the benefit of autowiring for your simple stuff and you can
use XML config for your more exotic Spring injections.  


Relph,Brian wrote:
> 
> 
> Did you try setting the value="none"? 
> 
> 
> Brian Relph
> 
> -----Original Message-----
> From: Timothy Orme [mailto:to...@genome.med.harvard.edu] 
> Sent: Friday, January 16, 2009 10:41 AM
> To: Struts Users Mailing List
> Subject: Re: Incorrect Bean Injected
> 
> So scratch that, I figured out that Struts is set to autowire by default
> with the spring plugin.
> 
> In my struts.xml I have:
> 
> <constant name="struts.objectFactory"
> value="org.apache.struts2.spring.StrutsSpringObjectFactory" /> <constant
> name="struts.objectFactory.spring.autoWire" value="type" />
> 
> And am now autowiring by type instead of name. However, does anyone know
> how to turn off autowiring altogether?
> I've seen a feature request for this, but it hasn't been filled yet. Has
> anyone devised a workaround?
> 
> Thanks,
> Tim Orme
> 
> Timothy Orme wrote:
>> This seems really strange to me, but I don't know the inner workings 
>> of struts enough to know if it's expected behavior.
>> 
>> I'm using Struts 2.1.2 and spring 2.5.3
>> 
>> I have a 2 service beans that have the same name, but depending on the 
>> action, one might be used instead of the other.
>> 
>> 
>> <bean id="hibernateUserService" 
>> class="hibernate.service.impl.LoginUserServiceImpl">
>> </bean>
>> 
>> <bean id="sqlUserService" 
>> class="sql.service.impl.LoginUserServiceImpl">
>> </bean>
>> 
>> <bean id="submitQuoteAction" class="action.quotes.SubmitQuoteAction">
>>     <property name="userService" ref="hibernateUserService" /> </bean>
>> 
>> <bean id="registerUserAction" class="action.users.RegisterUserAction">
>>     <property name="userService" ref="sqlUserService"/> </bean>
>> 
>> So I have 2 beans, each serving a similar purpose, so named the same, 
>> but used in different actions.
>> 
>> What happens is, at the webapp startup, I see the beans get injected 
>> into the actions fine. The types are correct, and the property is set.
>> The server starts without any issues. However, whats strange is that 
>> when I try and go to either action I get a null pointer for the 
>> userService objects in both actions.
>> 
>> I did notice though, that if I name one of the service beans to just 
>> "userService" instead of say, "hibernateUserService" then one of the 
>> actions will work correctly, while the other will fail saying that it 
>> cant cast sql.service.impl.LoginUserServiceImpl to 
>> hibernate.service.impl.LoginUserServiceImpl.
>> 
>> It seems then that Struts is wiring the properties by bean name and 
>> overriding the beans that I have specified in my applicationContext.
>> Does anyone know what would cause this or how to work around it?
>> 
>> Thanks,
>> Tim Orme
>> 
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: user-unsubscr...@struts.apache.org
>> For additional commands, e-mail: user-h...@struts.apache.org
>> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscr...@struts.apache.org
> For additional commands, e-mail: user-h...@struts.apache.org
> 
> ----------------------------------------------------------------------
> CONFIDENTIALITY NOTICE This message and any included attachments are from
> Cerner Corporation and are intended only for the addressee. The
> information contained in this message is confidential and may constitute
> inside or non-public information under international, federal, or state
> securities laws. Unauthorized forwarding, printing, copying, distribution,
> or use of such information is strictly prohibited and may be unlawful. If
> you are not the addressee, please promptly delete this message and notify
> the sender of the delivery error by e-mail or you may call Cerner's
> corporate offices in Kansas City, Missouri, U.S.A at (+1) (816)221-1024.
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscr...@struts.apache.org
> For additional commands, e-mail: user-h...@struts.apache.org
> 
> 
> 

-- 
View this message in context: 
http://www.nabble.com/Incorrect-Bean-Injected-tp21502777p21504674.html
Sent from the Struts - User mailing list archive at Nabble.com.


---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscr...@struts.apache.org
For additional commands, e-mail: user-h...@struts.apache.org

Reply via email to