java - 如何使用zookeeper作为基于 spring的web应用程序的数据源加载属性?

  显示原文与译文双语对照的内容
0 0

我有一个使用 spring 初始化并使用 Maven 构建的web应用程序。 使用静态呈现的属性文件加载各种属性。 由于不同的环境需要不同的属性值,我使用 Maven 概要文件根据构建时的环境加载不同的属性文件。 用于开发环境的Ex:- dev.properties 和生产环境的prod.properties 。

现在我想让插件构建独立于属性文件,属性的值将在初始化过程中从一些 datasource(zookeeper) 中获取。

在初始化上下文之前加载属性的?

时间: 原作者:

0 0

Properties 仅仅是Java类之一,而Apache配置项目恰恰提供了这样一种抽象。 我刚刚给你展示了一个JDBC示例,但实际上还有很多其他的东西。 下面是如何从数据库StoredProcedure加载属性的示例:


<jee:jndi-lookup id="dataSource" jndi-name="DS"/>

<bean id="storedProcedureConfiguration" class="com.my.proj.config.StoredProcedureConfiguration"
 p:dataSource-ref="dataSource"
 p:sqlQuery="pki_props.getProperties"/>


<bean id="propertiesFromDB" class="org.springframework.beans.factory.config.MethodInvokingFactoryBean"
 p:staticMethod="org.apache.commons.configuration.ConfigurationConverter.getProperties"
 p:arguments-ref="storedProcedureConfiguration"/>

<context:property-placeholder properties-ref="propertiesFromDB"/>

因此,你可以实现自己的AbstractConfiguration 来从Zookeeper加载 Properties 并将它的注入到 <context:property-placeholder>

原作者:
0 0

在java构造函数中,只需设置一个与服务器的连接,并使用客户端方法获取所需。 你可以在这里找到示例: http://zookeeper.apache.org/doc/trunk/javaExample.html

它看起来像这样( 但是你必须要详细说明)


public YourConstructor() {
Zookeeper zk = new ZooKeeper(host,...);
zk.getData(...);
}

原作者:
...