Spring MVC от 2,5 до 3,0 - PullRequest
       2

Spring MVC от 2,5 до 3,0

1 голос
/ 31 января 2011

Мы переносим наше веб-приложение с Spring 2.5 на Spring 3.0.5.Похоже, что все классы Controller (классы в пакете org.springframework.web.servlet.mvc: BaseCommandController, AbstractCommandController, SimpleFormController и т. Д.) Устарели.Мы активно использовали эти классы в нашем приложении.Вместо этого эти классы были заменены аннотацией @Controller.

У меня есть несколько вопросов относительно конфигурации контроллера Spring 3.0.x ...

  1. Мы использовали следующий XML для создания контроллерабоб весной 2.5.Есливместо этого используется для создания bean-компонентов Controller, тогда как мне подключить зависимости?Если возможно, я бы хотел избежать Auto-Wiring.

<bean id="photosetViewController" class="com.xyz.web.PhotosetViewController"
    p:photosetManager-ref="photosetManager"
    p:photoManager-ref="photoManager" />
  1. Мы создали 3 перехватчика.Мы используем SimpleUrlHandlerMapping для сопоставления этих перехватчиков с различными URL-адресами запросов, а также для сопоставления URL-адресов с контроллерами.Как добиться того же в Spring 3.0.x?

<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
    <property name="alwaysUseFullPath" value="true" />      
       <property name="interceptors">
           <list>
               <ref bean="httpRedirectInterceptor"/>
               <ref bean="loginInterceptor"/>
           </list>
       </property>      
        <property name="mappings">
            <value>             
                /abc.html=abcLookupController
                /photoupload.html=photoUploadController
          </value>
        </property>
</bean>

<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
    <property name="alwaysUseFullPath" value="true" />      
       <property name="interceptors">
           <list>
               <ref bean="httpRedirectInterceptor"/>
               <ref bean="loginInterceptor"/>
               <ref bean="userMenuInterceptor" />
           </list>
       </property>      
        <property name="mappings">
            <value>
                /index.html=homepageController
                /success.html=simpleController
            </value>
        </property>
</bean>
  1. В случае SimpleFormControllers мы использовали разные методы, такие как initBinder, referenceData, formBackingObject.Мы также использовали объекты команд и классы проверки.Как мы можем добиться того же в Spring 3.0.x?

<bean id="photosetAddController" class="com.xyz.web.PhotosetAddController"
    p:photosetManager-ref="photosetManager"
    p:photosetTypeManager-ref="photosetTypeManager"
    p:stateManager-ref="stateManager" >
    <property name="validator">
    <bean class="com.xyz.form.PhotosetAddValidator" />
    </property>
    <property name="formView" value="photosetadd" />
    <property name="successView" value="redirect:/photoset" /> 
</bean>

Любые указатели очень ценятся.

1 Ответ

2 голосов
/ 31 января 2011

Как отметил Скаффман, ваш код будет работать без каких-либо изменений. Я отвечу на ваши вопросы вкратце:

  1. Вы можете использовать @Resource(name="beanName") для инъекции на основе имени. Но автопроводка тоже хороший вариант. Либо @Autowired, либо @javax.inject.Inject. Обратите внимание, что вы можете использовать @Qualifier("name"), чтобы различать бины с одинаковым интерфейсом / базовым классом. Вы даже можете использовать квалификаторы javax.inject (об этом читайте в документации)

  2. Отображения перехватчиков могут остаться прежними

  3. Существует @InitBinder, который обозначает метод initBinder. Я не могу рассказать о другом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...