2014-02-17 73 views
2

我是一種編程服務,用於從數據庫獲取數據並通過REST服務提供它們。它使用spring mvc。我的數據庫連接配置是在屬性文件中,在上下文初始化期間,它作爲數據源bean在彈簧中加載。如何在沒有重新啓動應用程序服務器的情況下重新初始化bean

現在我的問題是 - 我想改變的屬性文件(例如更改數據庫的信息)的配置,但我不能重新啓動應用程序服務器,以便新的配置不加載。

如何重新初始化spring上下文或某些特定的bean,以便使用新定義的屬性?

回答

1

如果你想在春天多數據源,需要在運行時動態決定適當的數據源可以用Spring提供AbstractRoutingDataSource做到這一點。您必須在方法determineCurrentLookupKey()中實施您的查找關鍵邏輯來確定數據源。有了這個,你可以在運行時將不同的bean映射到不同的數據源。以下是與此相關的幾個問題。

How to programatically change databases in Spring with one DataSource?

而且

dynamically change Spring data source

+0

謝謝你的回答,但是怎麼樣,當我知道只有一個數據源和其他一個(或多個)將通過在我的jdbc-properties文件中重寫屬性來指定運行時?也許我可以使用你提供的鏈接中的信息來做到這一點,但我看不到。 – Wolf

+0

您可以創建一個在運行時由'determineCurrentLookupKey'返回的特定公共靜態變量,根據您的數據源bean將被選擇的返回值。檢查這個例子http://howtodoinjava.com/2013/12/28/spring-3-2-5-abstractroutingdatasource-example/ – Yogesh

相關問題