太长了,这是下半部分。
我做了一下小实验,以Webwork2的样例程序为例:
原先只在xwork.xml总进行了配置,Spring配置中无该bean。
<action
name="main" class="com.opensymphony.webwork.example.ajax.actions.ActiveCategory">
<result name="success">/category-main.jsp</result>
</action>
1、 使用byType方式:这个没什么可说,只要类一样自动就可以匹配,并使用。
添加了Spring中的配置:
<bean id="main_action"
class="com.opensymphony.webwork.example.ajax.actions.ActiveCategory"
singleton="false" />
2、 使用byName方式:在Spring中配置id=”xxx”,然后再xwork中配置name=”xxx”,可以自动匹配,可以使用。
修改了Spring配置如下:
<bean id="main"
class="com.opensymphony.webwork.example.ajax.actions.ActiveCategory"
singleton="false" />
3、 然后删除xwork.xml配置中的class=”com.xxx.xxx”为class=””,依然可以工作。
修改了xwork.xml配置如下:
<action name="main" class="">
<result name="success">/category-main.jsp</result>
</action>
4、 然后再实验使用Spring中bean的name属性进行匹配,依然工作正常。
修改了Spring配置如下:
<bean id="main1" name="main"
class="com.opensymphony.webwork.example.ajax.actions.ActiveCategory"
singleton="false" />
所以,看起来name和id都可以用来auto-wire,所以id如果可以区分,用它来auto-wire就可以了,比较方便。
不过我个人有个疑问,在Spring中声明action是否要生明singleton=”false”?按理说应该false吧,可是我看例子中都没有声明。我记得Spring默认是singleton=”true”的,这是为什么?