使用spring框架java读取动态键值对

时间:2015-09-08 17:23:05

标签: java spring

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);    

}

}

2 个答案:

答案 0 :(得分:1)

您可以使用默认值

的@Value注释
@Value("#{nodeProperty['A1_M1'] ?: nodeProperty['Default']}")

答案 1 :(得分:0)

使用以下代码将属性添加到对象中,稍后您可以使用getProperty()方法检查属性值是否退出。如果没有返回getProperty("Default")

@Resource(name = "nodeProperty")
private Properties nodeProperty;