通常,在struts.xml中,为每个Action指定类。使用default时SpringObjectFactory
,框架将要求Spring创建Action并按照默认的自动装配行为指定的方式装配依赖项。
这意味着您无需从动作中创建Spring bean。
但是,有时您可能希望Spring完全管理该bean。例如,如果您希望将更复杂的AOP或启用Spring的技术(例如Acegi)应用于bean,这将很有用。为此,您要做的就是在Spring applicationContext.xml中配置bean,然后从struts.xml中的Action更改class属性,以使用Spring中定义的bean名称而不是类名称。
Struts2本身会为每个请求创建新的操作实例,因此操作不是单例。如果您无法正常使用创建Spring Bean,请为其提供适当的名称scope
(例如scope="prototype"
),因为:
默认情况下,bean将是一个singleton
,除非该bean有一个父bean定义,在这种情况下它将继承父bean的作用域。
该loginActionBean
声明例子:
<bean id="loginActionBean" class="some.package.LoginActionBean" scope="prototype" />