Java 使用System.getProperty(“Some”u key)作为键获取属性值

Java 使用System.getProperty(“Some”u key)作为键获取属性值,java,spring,Java,Spring,这是我的带有spring注释的课程 @Component Class XyzPropeties { @Value("${#{systemProperties['xyz']}}"); //Tried but it doesn't work private xyzValue; } xyz.properties abc=abcValue 所以我正在设置System.setProperty(“xyz”、“abc”)并应为XyzProperties的“abcValue”,应为yeild

这是我的带有spring注释的课程

@Component
Class XyzPropeties {
    @Value("${#{systemProperties['xyz']}}"); //Tried but it doesn't work
    private xyzValue;
}
xyz.properties

abc=abcValue
所以我正在设置
System.setProperty(“xyz”、“abc”)并应为XyzProperties的“abcValue”,应为yeild abcValue

谢谢

回答自己的问题


这是答案->
@Value(${xyz}”)
//做了一个反向工程,Spring递归地计算表达式,它首先计算
${xyz}
,它计算为
abc
,然后计算
${abc}
它计算
abcValue
,然后没有进一步的计算,因此它返回值
abcValue

如果我理解正确,您希望在代码的任何位置访问XyzProperties类的属性xyzValue的值。该值存储在xyz.properties文件中

一种更简单的方法是将属性存储在application.properties文件中,该文件存储在spring应用程序的“resources”文件夹中。要使用这些属性,可以使用singleton类:

class Example {

    private static Example instance = null;

    @Value(${your.property.key.on.application.properties})
    private String value;

    private Example(){}

    public static Example getInstance(){
         if(instance == null){
               instance = new Example();
         }
         return instance;
    }

    public String getValue(){
       return value;
    }
}


希望有帮助

更多的上下文可能会有用…从哪里来的
@Component
@value
,从Spring注释开始。它没有。这不是太明显了吗?如果是这样的话,我就不会那样问这个问题了。