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

标签 java spring

A1_M1=X1

A1_M2=X2

A1_M3=X3

A2_M1=X4

Default=X5

以上值在 test.properties 的属性文件中。

我能够按照下面的代码打印键 A1_M1 的 X1 值。

如果我的键值是动态的并且我不知道键(属性文件),我需要一些指导如何实现它,直到我处理另一个对象,该对象被发送到类的 papratmer。我需要处理这个对象以了解键,然后查看属性文件是否存在键。如果存在则返回值,否则返回默认值。

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

}

}

最佳答案

您可以使用带有默认值的@Value 注解

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

关于java - 使用spring框架java读取动态键值对,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32463727/

相关文章:

java:在另一个测试中访问对象的最佳实践

java - 条件和循环练习

java - 关于java静态导入的问题

android - Spring Android 连接被拒绝 ECONNREFUSED

java - NoClassDefFoundException : javax/persistence/PersistenceContext Spring ORM with Hibernate

Spring 框架不需要服务器。是真的吗?

java - mvn依赖:tree prompt invalid JAVA_HOME directory error

java - 为什么不推荐使用 Storm backtype.storm.utils.TimeCacheMap

spring - Grails 4-Google Cloud Platform部署不断重启

java - Spring 4 属性文件不起作用