2008-12-09 4 views
2

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

ответ

1

Обычно вы добавляете прослушиватель контекстного загрузчика весны в свой веб-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.

2

С ActionForm класса распорки 1 вы будете нуждающейся:

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

вы используете 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» (новичкам, как я, не разрешено включать ссылки).