#spring #spring-ws
#spring #spring-ws
Вопрос:
Как получается, что когда я добавляю пространство имен в файл конфигурации spring bean, я могу значительно уменьшить конфигурацию xml?
Например:
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:sws="http://www.springframework.org/schema/web-services"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/web-services
http://www.springframework.org/schema/web-services/web-services-2.0.xsd">
<sws:annotation-driven />
</beans>
этот фрагмент позволяет мне явно не определять payloadrootannotationmethod Endpointmapping
Ответ №1:
Вы указали
<sws:annotation-driven/>
Из документации http://static.springsource.org/spring-ws/site/reference/html/tutorial.html
Используя элемент в нашей конфигурации, мы включаем обнаружение аннотаций @PayloadRoot. Возможно (и довольно распространено) иметь несколько связанных методов обработки в конечной точке, каждый из которых обрабатывает разные XML-сообщения.
По сути, это означает, что вы можете указать аннотацию в вашем файле Java для определения конечной точки —
@PayloadRoot(namespace = "http://mycompany.com/hr/schemas", localPart = "HolidayRequest")
Следовательно, вам больше не нужно указывать конфигурацию в XML.
Ответ №2:
Это «конфигурационные макросы», которые вошли в моду с Spring 2.5. Они сокращают трудоемкость, требуемую при объявлении общих компоновок компонентов, заменяя их макрокомандой. Примеры из Spring включают <context:annotation-driven/>
.
В вашем примере <sws:annotation-driven/>
заменяет набор компонентов отображения конечной точки Spring WS и обработчика, которые в противном случае вам пришлось бы объявлять явно.
Обратите внимание, что простое объявление пространства имен XML само по себе ничего не делает, это <sws:annotation-driven/>
то, что выполняет работу.
Ответ №3:
Когда
<sws: управляемый аннотациями />
обнаруживается в конфигурации, фреймворк автоматически регистрирует множество компонентов фреймворка для обнаружения сопоставлений конечных точек, для выполнения функций получателя сообщений и т.д. Фабрика сообщений, приемник сообщений и т.д. регистрируются автоматически. По сути, это сокращенный вариант для более простых случаев, когда нам просто нужны значения по умолчанию для всех этих компонентов.