Struts и Spring вместе?

Я довольно новичок в Struts и Spring. Мне нужно знать, как получить доступ к сервису Spring в Struts ActionForm. Даже указатель в правильном направлении был бы оценен.

3 ответа

Из класса ActionForm Struts 1 вам понадобится:

WebApplicationContextUtils.getRequiredWebApplicationContext(servletContext).getBean("yourService");

Вы используете Struts 1 или 2?

Если вы используете Struts 1, то есть несколько способов сделать это. Я предпочитаю делать это с помощью org.springframework.web.struts.DelegatingActionProxy. Вам нужно будет иметь spring-webmvc-struts.jar в пути к классам.

распорки-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" />

Я нашел эту технику самой элегантной, она не влияет на старый код, который не использует Spring.

Существует как минимум еще два способа соединения распорок 1 с пружиной. В ibm developerworks есть статья, в которой объясняются плюсы и минусы различных решений, в Google "Получите лучшее управление действиями Struts с помощью Spring" (новичкам, подобным мне, не разрешается включать ссылки).

Обычно вы добавляете весенний слушатель contextloader в свой веб-XML.

<listener>
 <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

Затем вы добавляете

<constant name="struts.objectFactory" value="spring"/>

на ваши struts.xml.

Тогда в вашем классе действий вы можете сказать что-то вроде:

class MyAction {
  @Autowired MyService service;
   ....
}

Это все, что нужно для распорок2.

Другие вопросы по тегам