簡體   English   中英

從數據庫加載Spring配置文件

[英]loading Spring profiles from database

通過實現ApplicationContextInitializer並將Spring配置文件添加到環境中,可以動態加載Spring配置文件。

問題是在我正在幫助的一個項目中,他們正在使用存儲在數據庫中的屬性。 如何從數據庫中加載表示其他活動Spring概要文件的屬性,然后將其注入環境。 在ApplicationContextInitializer中,由於應用程序上下文尚未完全初始化,因此我無法使用Spring Bean。 低級訪問數據庫是我唯一的選擇嗎?

Spring PropertyPlaceholderConfigurer需要使用一個位置屬性初始化,該屬性是所需的屬性文件。 但是,也可以使用java.util.Properties對象初始化該類。

從棄用項目Spring的模塊,你可以在這里找到這個類實現InitializingBeanFactoryBean春天clases,它的行為像一個正常的這樣的方式java.util.Properties對象,它可以被傳遞到PropertyPlaceholderConfigurer.setProperties()方法。

這樣,您就可以利用org.apache.commons.configuration.DatabaseConfiguration ,該屬性的行為類似於Properties對象,但從數據庫中讀取屬性。 例如,考慮以下bean配置:

<bean 
    name="MyDatabaseConfiguration"
    class="org.apache.commons.configuration.DatabaseConfiguration">

    <constructor-arg type="javax.sql.DataSource" ref="someDataSource"/>
    <constructor-arg index="1" value="SCHEMA.PROPERTIES_TABLE"/>
    <constructor-arg index="2" value="KEY"/>
    <constructor-arg index="3" value="VALUE"/>
</bean>

在這里,arg 1是包含屬性的表,arg 2是鍵列,而arg 2是值列。

因此,您可以創建與CommonsConfigurationFactoryBean非常相似的自定義類,並以這種方式使用:

<bean 
    name="PropertyPlaceholderConfigurer"     
    class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="properties" ref="MyCustomClass"/>
</bean>

其中MyCustomClass是用於包裝MyDatabaseConfiguration

希望能幫助到你。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM