我有一个java.util.Properties对象,其中包含很少的键值对。我试图在spring配置文件中使用这个Property对象,即在spring配置中定义键,在运行时,它应该从属性对象中获取值。
例如:
<bean id="test" class="com.sample.Test">
<constructor-arg value="${PROPERTY_KEY} />
</bean>
现在,在运行时,构造函数应该获取Property对象中存在的值。
有没有办法完成这项工作?
注意:我不想在这里使用config.properties。希望使用java.util.Properties
谢谢, 拉胡
答案 0 :(得分:0)
<context:property-placeholder location="classpath:placeholder.properties"/>
或
<bean id="properties"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location" value="classpath:<file-name>.properties" />
</bean>
答案 1 :(得分:0)
首先,你必须创建bean来访问你的属性文件,如下面的
<bean id="appProperties"
class="org.springframework.beans.factory.config.PropertiesFactoryBean">
<property name="singleton" value="true" />
<property name="ignoreResourceNotFound" value="true" />
<property name="locations">
<list>
<value>classpath*:localhost-mysql.properties</value>
<value>classpath*:mail-server.properties</value>
</list>
</property>
</bean>
<bean id="placeholderConfig" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="properties" ref="appProperties" />
</bean>
接下来,您可以从属性文件中访问键值对,如下所示
<bean id="mailServerSettings" class="com.ratormonitor.app.context.EmailSettings">
<property name="host" value="${mail.server.host}" />
<property name="port" value="${mail.server.port}" />
<property name="username" value="${mail.server.username}" />
<property name="password" value="${mail.server.password}" />
<property name="requestContextPath" value="${request.context.path}" />
</bean>
希望此代码能解决您的问题。
答案 2 :(得分:0)
您可以使用Spring Expression Language(SpEL)在spring配置xml文件中获取java对象值。
一个例子:
<property name="misfireInstruction"
value="#{T(org.quartz.CronTrigger).MISFIRE_INSTRUCTION_FIRE_ONCE_NOW}"/>
答案 3 :(得分:0)
所以我就这样做了:
正如我所说,我有一个java.util.Properties对象。然后我创建了一个CustomProperty类,它扩展了PropertySource&gt;
public class CustomPropertySource extends PropertySource<Map<String, Object>>
然后在我的主要课程中,我做了以下几点:
AbstractApplicationContext context = new ClassPathXmlApplicationContext(new String[] {springConfigLocation, false);
context.getEnvironment().getPropertySources.addlast(new CustomPropertySource("custom", propertiesObject));
conext.refresh();
然后在spring配置文件中,我不得不添加:
<context: property-placeholder ignore-unresolvable="true"/>
因此,通过这种方式,我可以获取spring配置文件中定义的键的值,就像我们从属性文件中获取值一样。
谢谢, 拉胡