框架综合在这篇文章的最后有一段
开发者不必在Spring中去注册action,尽管可以这么去做,通常Struts框架会自动地从action mapping中创建action对象。默认情况下框架使用的自动装配策略是name,也就是说框架会去Spring中寻找与Action属性名字相同的bean,可选的装配策略还有:type、auto、constructor,开发者可以通过常量struts.objectFactory.spring.autoWire来进行设置。 创建实例时,不是利用配置Action时指定的class属性值,根据bean的配置id属性,从Spring容器中获得相应的实例。

我不怎么理解,请问谁能帮忙一下!?特别是这句话“框架会去Spring中寻找与Action属性名字相同的bean”,怎么理解呀?如果有例子最好了。控制器Action访问Spring的业务逻辑组件这一策略,开发者该如何使用?(初学者有说错的地方请指出并包含,谢谢)

解决方案 »

  1.   

    “框架会去Spring中寻找与Action属性名字相同的bean”,比如说在你的Action类中有一个Services service的属性,框架会去找名称为service的属性所对应的类,将他实例化。
         按照名称自动装配, 在<beans>节点中增加default-autowire="byName"属性定义.
    <bean id="sameProperty" abstract="true">
    <property name="id" value="100"></property>
    <property name="name" value="heguangchao"></property>
    </bean><!-- 对于里面的公用属性用parent来指定上面的抽象类id的配置 -->
    <bean id="bean2" class="sino.spring.bean.Bean2" parent="sameProperty">
    <property name="password" value="123"/>
    </bean><bean id="bean3" class="sino.spring.bean.Bean3" parent="sameProperty"/><!-- 
    <bean id="bean4" class="sino.spring.bean.Bean4">
    <property name="bean2" ref="bean2"/>
    <property name="bean3" ref="bean3"/>
    </bean>
    -->
    <bean id="bean4" class="sino.spring.bean.Bean4"/>? <!-- 省去上面的注入方式 -->
    保证在sino.spring.bean.Bean4类中的set方法为setBean2和setBean3,很显然不是很灵活,即要和上面申明的id的值要相同.