gpt4 book ai didi

java - Spring 3.2 Properties 文件读取动态属性名称(不是自动注入(inject))

转载 作者:太空宇宙 更新时间:2023-11-04 06:30:09 24 4
gpt4 key购买 nike

我正在使用 Spring 3.2 并添加了一个属性文件,我可以使用该文件将值注入(inject)到 java 类变量中。

*<bean id="serverProperties"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>classpath:mysetof.properties</value>
</list>
</property>
<property name="placeholderPrefix" value="$server{" />
<property name="ignoreResourceNotFound" value="false" />
<property name="ignoreUnresolvablePlaceholders" value="false" />
</bean>*

*@Value("#{$server{default.myproperty}}")
private double defaultMyProperty*

但是我有一些需要动态访问的属性。

我如何访问这些属性?我已经使用了环境变量

*/** Spring var - used for accessing properties. */
@Autowired
private Environment env;*

但是当我尝试执行以下操作时,我得到返回空值:

propertyValue = env.getProperty("default.myproperty");

直接访问属性值而不是自动注入(inject)它们的最佳方法是什么。

这些属性可能存在也可能不存在,并且可能存在大量属性,因此我不希望使用自动注入(inject),因为这将涉及设置大量变量。

提前致谢。

最佳答案

您可以尝试在applicationContext.xml中使用CustomResourceBundleMessageSource,如下所示我已在 core-messageSource bean 中配置 messages.properties 文件,并在 messageSource bean

中配置 application-messages.properties 文件
<bean id="core-messageSource"
class="com.datacert.core.spring.CustomResourceBundleMessageSource">
<property name="basenames">
<list>
<value>messages</value>
</list>
</property>
</bean>

<bean id="messageSource"
class="com.datacert.core.spring.CustomResourceBundleMessageSource">
<property name="parentMessageSource">
<ref bean="core-messageSource"/>
</property>
<property name="basenames">
<list>
<value>application-messages</value>
</list>
</property>
</bean>

然后在你的bean中你可以执行如下操作

//I have security.cookie.timeout = 10 in my properties file
ResourceBundleMessageSource bean = new ResourceBundleMessageSource();
bean.setBasename("application-messages");
String message = bean.getMessage("security.cookie.timeout", null, Locale.getDefault());
System.out.println("message = "+message)//will print message = 10

关于java - Spring 3.2 Properties 文件读取动态属性名称(不是自动注入(inject)),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26220785/

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