Spring MVC 2.5 Использование сочетания аннотаций и конфигурации XML, но xml игнорируется - PullRequest
3 голосов
/ 14 июля 2011

В моем веб-приложении Spring MVC я хочу смешать конфигурацию на основе xml с аннотациями: я использую аннотации, такие как @Controller, @RequestMapping("bla.htm"), @RequestParam и т. Д., Чтобы разрешить методы HttpRequest s и Controller.Поэтому я добавил

<bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping"/>
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"/>
<context:component-scan base-package="somePackage.controller"/>

к своему dispatcher-servlet.xml.

Но у моих контроллеров есть атрибуты.Эти атрибуты могут быть добавлены через аннотацию @AutoWired.Но я также должен определить сферы.Так что у меня будет две аннотации для каждого атрибута, что делает код плохо читаемым.Поэтому я хочу внедрить зависимости в мой applicationContext.xml файл.

Есть ли способ сохранить отображение запросов, управляемое аннотациями, но использовать файлы context.xml для внедрения зависимостей?Или возможно использовать только ДРУГИЕ аннотации ИЛИ конфигурацию xml?

примечание: мои bean-компоненты для внедрения зависимостей находятся в другом файле xml.

PS:

Я должен иметьупомянуто, я использую Spring 2.5 и не могу обновить его.

Ответы [ 2 ]

4 голосов
/ 14 июля 2011

Нет, <mvc:annotation-driven> отлично работает с XML. Но вам нужно избавиться от <context:component-scan>.

Обновление: в Spring 2.5 это должно помочь вам начать работу:

<?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:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="
        http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context-2.5.xsd">

    <context:annotation-config />

    <bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping" />
    <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" />

    <!-- now add some controllers -->

</beans>
2 голосов
/ 14 июля 2011

Да, это, конечно, возможно.

Чтобы использовать аннотации контроллера, такие как @Controller и @RequestMapping, убедитесь, что вы поставили

<mvc:annotation-driven/>

в вашем <servletname>-servlet.xml

Затем просто определите свои контроллеры, используя обычную нотацию XML-бина, такую ​​как:

<bean class="com.company.controllers.AController">
    <property name="propertyName" ref="beanId" />
</bean>

Эти ссылки могут быть получены из любых других applicationContext.xml, определенных в вашем web.xml.

...