Spring程序讀取Cloud Foundry服務信息示例代碼

Cloud Foundry提供的服務實例本質上就是訪問信息:IP、端口、用戶名、密碼等,使用的過程當然可以寫死在代碼或配置文件裏,但是高級一點兒的辦法當然是讓程序可以自動按照環境適配服務實例信息,切換數據庫,消息中間件,雲存儲等代碼連接的位置。這篇先寫一下在web.xml裏配置了listener的spring程序如何自動獲取CF的服務實例信息,示例代碼由Maven管理。
在web.xml裏配置了以下listener的spring程序,PaaS裏綁定的服務信息可以被自動獲取,只需要在context配置文件中使用指定的語法定義bean即可。

<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

比如,要使用redis服務,只需在context配置文件中定義如下:

<cloud:redis-connection-factory id="redisConnectionFactory"/>

然後在程序中使用下面的代碼,即可獲得綁定了的redis服務信息:

@Autowired(required=false) RedisConnectionFactory redisConnectionFactory;
Hostname = ((JedisConnectionFactory) redisConnectionFactory).getHostName();
Port = ((JedisConnectionFactory) redisConnectionFactory).getPort());

針對redis,這個bean可以直接通過spring-data-redis進行操作。
由於Spring與Cloud Foundry及其相關服務(如Redis)的兼容問題,不同版本的spring庫可能導致兼容性問題,比如spring 3.2.8和spring-cloud 1.0.0放在一起會導致綁定了redis服務的程序無法在PaaS上啓動。確保可兼容的版本可參見樣例程序(是個Maven工程)的pom.xml。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章