3

我以前从未使用过 Spring,并且遇到了一个看起来有点像这样的配置对象

public class Config {

@Value("${app.module.config1}")
private String config1;

@Value("${app.module.config2}")
private String config2

...

public String getConfig1() {
    return config1;
}

...

谁能解释这里发生了什么?我假设这是某种类型的代码注入,但我找不到这些值的来源!

4

2 回答 2

4

它们允许您直接从变量中的属性文件(系统或声明的属性)注入值。使用util:properties 标签,您可以在您的applicationContext.xml

 <util:properties id="message" location="classpath:com/your/program/resources/message.properties" />

指向一个名为“message.properties”的属性文件,其中包含一些内容:

 application.hello.message = Hello World!

@Value然后,在您的 java 源文件中,使用注释从该属性文件中注入一个直接值 :

 @Value("#{message['application.hello.message']}")
 private String helloWorldMessage;
于 2012-10-19T04:43:18.187 回答
3

@Value("${app.module.config1}")

这是 spring 表达式语言的一部分,spring 框架将从中查找app.module.config1JVM 属性System.getProperties()并将该属性的值注入到config1该类的属性中。有关 Spring 3.0.x 中的更多详细信息,请参阅此参考资料以及当前文档的此参考资料。

于 2012-10-19T04:40:10.860 回答