gpt4 book ai didi

spring - 远程属性源

转载 作者:行者123 更新时间:2023-12-02 11:43:51 25 4
gpt4 key购买 nike

是否有人有幸构建一个使用远程源(例如数据库)从中检索属性值的 PropertySource?这个想法是构造一个 PropertySource(需要一些连接信息,例如主机/端口)并将其插入 PropertySourcePlaceholderConfigurer 中。

这个问题似乎是先有鸡还是先有蛋的问题。如何获取 PropertySource 的连接信息?我可以首先使用配置实例化 PropertySourcePlaceholderConfigurer,以加载具有远程主机和端口属性的属性文件,然后实例化 PropertySource 并将其注入(inject)回配置器中。但是,我似乎无法找到一种方法来确保要实例化的第一个 bean(并快速注入(inject)配置器)是我的属性源。我需要这个,因为当然,我所有其他 bean 都依赖于远程属性。

最佳答案

Commons Configuration 支持通过 org.apache.commons.configuration.ConfigurationBuilder 将各种源(包括 JDBC 数据源)的属性加载到 org.apache.commons.configuration.Configuration 对象中。

使用org.apache.commons.configuration.ConfiguratorConverter,您可以将Configuration对象转换为java.util.Properties对象,该对象可以传递给PropertySourcesPlaceholderConfigurer 。

关于如何配置ConfigurationBuilder这个先有鸡还是先有蛋的问题,我建议使用org.springframework.core.env.Environment来查询系统属性、命令行属性或JNDI属性。

在此示例中:

@Configuration
public class RemotePropertyConfig {

@Bean
public static PropertySourcesPlaceholderConfigurer propertyPlaceholderConfigurer(Environment environment)
throws Exception {
final PropertySourcesPlaceholderConfigurer props = new PropertySourcesPlaceholderConfigurer();
final ConfigurationBuilder configurationBuilder = new DefaultConfigurationBuilder(environment.getProperty("configuration.definition.file"));
props.setProperties(ConfigurationConverter.getProperties(configurationBuilder.getConfiguration()));
return props;
}

您需要指定环境属性configuration.definition.file,它指向配置 Commons Configuration 所需的文件:

关于spring - 远程属性源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25271537/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com