A1_M1=X1
A1_M2=X2
A1_M3=X3
A2_M1=X4
Default=X5
以上值位于test.properties的属性文件中。
我能够为Key A1_M1打印X1的值,如下面的代码。
如果我的键值是动态的并且我不知道键(属性文件),我需要一些方向来实现它,直到我处理另一个将papratmer发送给类的对象。我需要处理此对象以了解Keys,然后查看属性文件(如果密钥存在与否)。如果存在则返回值,否则返回默认值。
**spring-bean.xml**
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:util="http://www.springframework.org/schema/util"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation=" http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/util
http://www.springframework.org/schema/util/spring-util-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring--context-
3.0.xsd">
<util:properties id="nodeProperty"location="classpath:config/test.properties" />
<context:property-placeholder properties-ref="nodeProperty" />
<context:component-scan base-package="com.jpmc.selftutor" />
</beans>
代码
SpringDemo.java
package com.jpmc.selftutor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.ApplicationContext;
import org.springframework.stereotype.Component;
import org.springframework.context.support.
ClassPathXmlApplicationContext;
@Component("SpringDemo")
public class SpringDemo {
private static String a1m1;
@Autowired
public SpringDemo(@Value("${A1_M1}") String a1m1){
SpringDemo.a1m1 = a1m1;
}
@SuppressWarnings({ "resource", "unused" })
public static void main(String args[]){
ClassPathXmlApplicationContext ctx = new
ClassPathXmlApplicationContext(new String[]
{ "spring-bean.xml" });
System.out.println("Value of a1m1: " +a1m1);
}
}
答案 0 :(得分:1)
您可以使用默认值
的@Value注释@Value("#{nodeProperty['A1_M1'] ?: nodeProperty['Default']}")
答案 1 :(得分:0)
使用以下代码将属性添加到对象中,稍后您可以使用getProperty()
方法检查属性值是否退出。如果没有返回getProperty("Default")
:
@Resource(name = "nodeProperty")
private Properties nodeProperty;