2011-05-11 125 views
2

當我在spring bean配置文件中添加一個名稱空間時,我能夠大幅減少xml配置嗎?Spring中的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> 

這個片段讓我無法定義PayloadRootAnnotationMethodEndpointMapping明確

回答

3

您指定

<sws:annotation-driven/> 

從文檔http://static.springsource.org/spring-ws/site/reference/html/tutorial.html-

通過在我們的配置中使用 元素,我們 可啓用@PayloadRoot註釋的檢測 @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端點映射和處理程序bean,否則你必須明確聲明。

請注意,簡單地聲明XML名稱空間本身不會執行任何操作,它是執行此操作的<sws:annotation-driven/>

0

當在配置被檢測到

 
<sws:annotation-driven /> 

,框架自動寄存器框架豆以檢測端點的映射,以作爲消息接收等消息工廠,消息接收器等的迴轉都是自動註冊的。對於更簡單的情況,這基本上是一個捷徑,我們只需要所有這些bean的默認值。