gpt4 book ai didi

Spring环境属性源配置

转载 作者:IT老高 更新时间:2023-10-28 13:45:06 26 4
gpt4 key购买 nike

我正在开发一个应用程序库,其中包含一个名为“Config”的实用程序类,它由 Spring Environment 对象支持,并为所有应用程序提供强类型的 getter配置值。

配置的属性源可能因环境(DEV/PROD)和使用情况(独立/测试/webapp)而异,范围可以从默认属性(系统和环境属性)到自定义数据库和 JNDI 源。

我正在苦苦挣扎的是如何让使用这个库的应用程序轻松配置 Environment 使用的属性源,以便这些属性可以在我们的 中使用Config 类并通过 PropertySourcesPlaceholderConfigurer

我们仍在使用 XML 配置,因此理想情况下,这可以在 XML 中进行配置。

<bean id="propertySources" class="...">
<property name="sources">
<list>
<ref local="jndiPropertySource"/>
<ref local="databasePropertySource"/>
</list>
</property>
</bean>

...然后以某种方式注入(inject)到 Environment 的属性源集合中。

我了解到,由于应用上下文生命周期的时间安排,这样的事情可能是不可能的,这可能需要使用应用程序初始化程序类来完成。

有什么想法吗?

最佳答案

这取决于您希望如何使用属性,如果是使用 ${propertyname} 语法注入(inject)属性,那么是的,只需使用 PropertySourcesPlaceHolderConfigurer 即可,它在内部可以访问 PropertySources在环境中注册。

如果您打算直接使用 Environment,例如使用 env.getProperty(),那么您是对的 - 使用 PropertySourcesPlaceHolderConfigurer 的属性在此处不可见。唯一的方法是使用 Java 代码注入(inject)它,我知道有两种方法:

一个。使用 Java 配置:

@Configuration
@PropertySource("classpath:/app.properties")
public class SpringConfig{

}

b.使用自定义 ApplicationContextInitializer ,它的描述方式here

关于Spring环境属性源配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14416005/

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