Je suis assez nouveau à la fois Struts et Spring. J'ai besoin de savoir comment accéder à un service de printemps dans un ActionForm Struts. Même un pointeur dans la bonne direction serait apprécié.Struts et printemps ensemble?
Répondre
Normalement, vous ajoutez l'écouteur spring contextloader à votre xml web.
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
Ensuite, vous ajoutez
<constant name="struts.objectFactory" value="spring"/>
à votre struts.xml.
Ensuite, dans votre classe d'action que vous pouvez dire des choses comme:
class MyAction {
@Autowired MyService service;
....
}
C'est tout ce qu'il ya à faire pour struts2.
D'un struts 1 classe ActionForm vous avoir besoin:
WebApplicationContextUtils.getRequiredWebApplicationContext(servletContext).getBean("yourService");
Êtes-vous en utilisant Struts 1 ou 2?
Si vous utilisez Struts 1 alors il y a deux façons de le faire. Je préfère le faire en utilisant org.springframework.web.struts.DelegatingActionProxy. Vous aurez besoin du spring-webmvc-struts.jar dans le classpath.
struts-config.xml:
<action path="/faq" type="org.springframework.web.struts.DelegatingActionProxy" name="faqForm" parameter="method">
<forward name="List" path="faq.list" />
</action>
applicationContext.xml:
<bean name="/faq" class="com.mypackage.FAQAction" autowire="byType" />
J'ai trouvé cette technique pour être le plus élégant, il ne touche pas l'ancien code qui n » t utiliser le printemps.
Il existe au moins deux autres façons d'intégrer les entretoises 1 avec un ressort. Il y a un article sur ibm developerworks qui explique les avantages et les inconvénients des différentes solutions, google "Mieux gérer les actions de Struts, avec Spring" (les débutants comme moi-même ne sont pas autorisés à inclure des liens).