2014-12-22 4 views
0

Я использую Spring 3.0.4 и хочу перейти на Spring 4 (4.1.3 - это последняя версия). В настоящее время я использую классы, основанные на SimpleFormController, поэтому мне нужно перейти на @Controller. Я уже использовал это в приложении Spring Boot, но этот довольно старый.Миграция контроллеров на весну 4

К примеру, в моем web.xml:

<servlet> 
    <servlet-name>exportServlet</servlet-name> 
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
    <init-param> 
     <param-name>contextConfigLocation</param-name> 
     <param-value>classpath:spring/exportServlet-config.xml</param-value> 
    </init-param> 
    <load-on-startup>3</load-on-startup> 
</servlet> 
<servlet-mapping> 
    <servlet-name>exportServlet</servlet-name> 
    <url-pattern>/export/*</url-pattern> 
</servlet-mapping> 

В exportServlet-config.xml:

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" 
     xmlns:context="http://www.springframework.org/schema/context" 
     xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd 
       http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> 

    <!-- ========================= MVC CONFIG ========================= --> 
    <context:annotation-config/> 

    <bean id="viewResolver" 
      class="com.traficon.tmsng.server.web.mvc.ExportEventViewResolver"> 
     <!-- where to find the XML data in the model map --> 
     <property name="sourceKey" value="src"/> 
     <!-- where XSLT files are stored --> 
     <property name="prefix" value="/WEB-INF/xsl/"/> 
     <!-- suffix of xsl file --> 
     <property name="suffix" value=".xsl"/> 
     <!-- all view names match --> 
     <property name="viewNames" value="*"/> 
     <property name="cacheTemplates" value="false"/> 
     <property name="viewClass" 
        value="com.traficon.tmsng.server.web.mvc.DefaultExportEventView"/> 
    </bean> 

    <bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"> 
     <property name="mappings"> 
      <value> 
       /eventhistory*.html=exportEventController 
       /eventhistory*.zip=exportEventController 
       /eventhistory*.xls=exportEventController 
       /integrateddatahistory*.html=exportIntegratedDataController 
       /integrateddatahistory*.xls=exportIntegratedDataController 
       /flowdatahistory*.html=exportFlowDataController 
       /flowdatahistory*.xls=exportFlowDataController 
       /presencedatahistory*.html=exportPresenceDataController 
       /presencedatahistory*.xls=exportPresenceDataController 
       /bicycledatahistory*.html=exportBicycleDataController 
       /bicycledatahistory*.xls=exportBicycleDataController 
       /logging*.html=exportLoggingController 
      </value> 
     </property> 
    </bean> 

    <!-- ========================= CONTROLLERS ========================= --> 

    <bean id="exportEventController" class="com.traficon.tmsng.server.web.mvc.ExportEventController"> 
     <property name="commandClass" 
        value="com.traficon.tmsng.server.web.mvc.ExportEventControllerCommandBean"/> 
     <property name="supportedMethods" value="POST,GET"/> 
     <property name="cacheSeconds" value="86400"/> 
    </bean> 


    <bean class="com.traficon.tmsng.server.web.export.MessageExporterRunnable" scope="prototype"/> 
</beans> 

Чтобы обновить, я удалить материал из web.xml и обновить ExportEventController класс. Мой обновленный класс в настоящее время использует @Controller аннотацию (ExportMessageController является абстрактным классом, который больше не простирается от SimpleFormController:

@Controller 
@RequestMapping("/export") 
public class ExportEventController extends ExportMessageController<EventMessage, ExportEventControllerCommandBean> 
{ 
    // Need to allow GET because Air client converts POST into a GET 
    @RequestMapping(value = "/eventhistory*", method = {RequestMethod.GET, RequestMethod.POST}) 
    public ModelAndView onSubmit(ExportEventControllerCommandBean cmd, HttpServletResponse response) throws Exception 
    { 

    } 
} 

Удаляя web.xml вещи, я больше не боб «viewResolver» в моей контекст.Как добавить это снова?

Кроме того, мой контроллер получает сканирование компонентов, но когда я помещаю точку останова внутри метода onSubmit, он никогда не попадает. Что еще мне нужно сделать для миграции ?

+0

Для viewResolver вы можете создать класс @Configuration и расширить WebMvcConfigurerAdapter. –

+0

@MikeR Я не использую конфигурацию Java на данный момент. Полагаю, что я могу просто создать компонент в основном контексте приложения, а не в специальном конфиге сервлета. –

ответ

1

I man чтобы он работал, сохраняя мой exportServlet-config.xml. Мне нужно было добавить <mvc:annotation-driven/>.

Смежные вопросы