我有時使用Spring的自定義命名空間。像CXF one或ActiveMQ一樣。如何解碼Spring中的自定義名稱空間?
這裏是我如何申報我的嵌入式ActiveMQ代理服務器爲例:
<amq:broker useJmx="false" persistent="true">
<amq:transportConnectors>
<amq:transportConnector uri="${mobilepush.activemq.broker.transport.connector.uri}" />
</amq:transportConnectors>
<amq:persistenceAdapter>
<amq:kahaPersistenceAdapter directory="${mobilepush.activemq.broker.queue.persistence.directory}" maxDataFileLength="33554432"/>
</amq:persistenceAdapter>
</amq:broker>
我不知道這麼多關於使用Spring自定義命名空間,但在我看來,這些命名空間只是提供了一個「捷徑」獲取更詳細的Spring bean聲明。
像Xebia管理附加一些圖書館在其文檔中提供的自定義命名空間和原始彈簧實現之間的等價:
<management:jms-connection-factory-wrapper
id="connectionFactory"
connection-factory="rawConnectionFactory" />
是等於:
<bean id="connectionFactory" class="fr.xebia.management.jms.SpringManagedConnectionFactory">
<property name="connectionFactory" ref="rawConnectionFactory" />
</bean>
http://code.google.com/p/xebia-france/wiki/ManagedJmsConnectionFactory
但有時候自定義命名空間文件entation是不夠精確,我想了解什麼是根據Java類的引擎蓋下...
所以我想知道的是如何獲得原始Spring bean聲明等價的一個自定義命名空間的用法
是否有任何IDE中包含「自動翻譯工具」?
據我所知,似乎有不同的工具來創建自定義Spring命名空間,如XBean ...有沒有一種自動或手動的方式來了解如何在不知道所有這些工具的情況下在引擎蓋下工作命名空間?
感謝
感謝漂亮的答案的過程。所以最後,如果庫本身提供了「原始Spring等價」,那麼我們就不必檢查名稱空間是如何工作的。 –
是的,本質上。我有時候會把它看作是允許底層實現發生變化的抽象,例如,在Spring 3.1.0之前,用於註冊AnnotationDrivenHandlerAdapter的'mvc:annotation-driven'名稱空間現在在Spring 3.1.x中是RequestMappingHandlerAdapter,它行爲非常不同,但從用戶的角度看,沒有任何改變,'mvc:annotation-driven'已經阻止了用戶的這種改變 –