我正在尝试使用 @PropertySource 以便从 .properties 文件加载属性并在Spring批处理中使用它们。
我有一个Config.java文件,该文件可以加载这些属性,其中有一个application.properties文件,其中包含数据,我正在尝试通过另一个文件中Config.java的实例访问这些数据。但看起来Config对象为空。
这是 Config.java 文件:
package demo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
import org.springframework.core.env.Environment;
@Configuration
@PropertySource("classpath:config/application.properties")
public class Config {
@Autowired Environment env;
//Attempt number 1
@Value("${source.name}")
public String name;
//Attempt number 2
public String getSource(){
return env.getProperty("source.name");
}
}
application.properties 文件:
source.name="OPTIQ"
另一个文件,我试图到达此特定行(我删除了很多过程,但只有这些行很重要):
public class Process{
@Autowired Config configuration;
String source;
public setSource(){
this.source = configuration.source;
// this.source = configuration.getSource();
}
}
结果将为“ OPTIQ”,但配置对象似乎为空或未初始化,因此我想我在这里错过了一步,或者我不太了解 @PropertySource 的工作方式
我没有文件访问错误,他似乎找到了文件。
第一个问题是,哪种尝试是正确的:
-带有@Value的数字1?
-带有public getSource()的2号吗?
第二个问题:
为了实现此目的,我需要更改什么?
答案 0 :(得分:0)
自动连接您班上的org.springframework.core.env.Environment
。然后,您将可以使用environment.getProperty(propertyName)
;
@Component
public class Process{
@Autowired
private Environment environment;
public void yourMethod(){
// access it as below wherever required.
environment.getProperty(propertyName);
}
}
还要在Config类上添加@PropertySource
。
@Configuration
@PropertySource("classpath:some.properties")
public class Config {
}