Я довольно новичок и для Struts, и для Spring. Мне нужно знать, как получить доступ к Spring Service в Struts ActionForm. Даже указатель в правильном направлении был бы оценен.Стойки и весна вместе?
ответ
Обычно вы добавляете прослушиватель контекстного загрузчика весны в свой веб-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;
....
}
Это все есть на него для struts2.
С ActionForm класса распорки 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" />
Я нашел эту технику, чтобы быть самым элегантным, это не влияет на старый код, который Безразлично» t используйте пружину.
Существует, по меньшей мере, еще два способа соединения стойки 1 с пружиной. В ibm developerWorks есть статья, в которой объясняются плюсы и минусы различных решений, google «Получите лучший дескриптор действий Struts с Spring» (новичкам, как я, не разрешено включать ссылки).