無需自定義類,或解析器。請記住,一個bean只是一個具有get/is/set方法的類。 A java.net.URL
類符合此類要求。
解決方案:使用java.net.URL
作爲Spring配置bean,並將其稱爲getPort
方法。
記住,在春天,你可以很容易的,只要是體育用GET /是/套 Bean的常規方法的任何連線作爲豆。 java.net.URL類做了這樣的事情。
**警告**我只是在我的$ $$中輸入了這個內容,您必須檢查我可能在這個Spring-config僞代碼中引入的任何語法錯誤。有一點可以肯定的是,這個概念將在Spring 2.5中起作用,它依賴於util
模式。
如果您使用的是舊版本的Spring,則必須使用PropertyPathFactoryBean
。如果您使用的是Spring 3.0,那麼您將需要使用Spring表達式語言(EL),但由於我不熟悉Spring 3.0,因此我無法對其進行評論。
在java中:
int port = (new URL(MyUtils.getServiceURL()).getPort()
在Spring:
<bean id="serviceURL" class="MyUtils" factory-method="getServiceURL" />
<bean id="myURL" class="java.net.URL">
<constructor-arg>
<ref-bean="serviceURL"/>
</constructor-arg>
</bean>
<util:property-path id="defaultPort" path="myURL.port"/>
<bean id="myBean>
<property name="defaultPort" ref="defaultPort"/>
</bean>
有可能是所有這四種表情合併爲三個或更少的方式,不知道如果這但會提高可讀性。不過,這個概念仍然是一樣的。將一個java.net.URL
實例視爲一個bean,通過其構造函數設置其URL,並通過其getPort()
方法獲得一個暫掛(通過Spring)。
** **編輯: 如果您在使用Spring 2.5,您可以創建一個內嵌的Groovy豆,做一切你。我見過人們這樣做一體化膠水擺脫衆多臨時春豆的地方持有人。當你需要定義一個類(當它比使用Spring標記更簡單時)以及當你知道這樣的類不會在Spring的佈線之外使用時,這是IMO的最佳選擇。
將java.net.URL視爲一個bean(請參閱下面的答案)。 – 2011-02-16 01:44:55