我需要就以下问题寻求帮助。我正在从属性文件中读取一些属性并将更改的/最终值分配给另一个变量。我在将 static{ } 块更改为普通块或在构造函数中遇到困难。
我希望所有这些变量在 Web 应用程序加载/部署时从 .properties 文件中获取赋值。有什么帮助吗?
private static String username;
private static String password;
private static String dbURL;
private static String dbPort;
private static String filePath;
private static File localFile;
private static File remoteFile;
@Value("${local.file.name}")
private String localFileName;
@Value("${remote.file.name"})
private String remoteFileName;
static {
File finalFilePath = new File(filePath);
if (!finalFilePath.exists() && !finalFilePath.isDirectory()) {
finalFilePath.mkdirs();
}
localFile = new File(StringBuffer(finalFilePath).append("/").append("localFileName").toString());
remoteFile = new File(StringBuffer(finalFilePath).append("/").append("remoteFileName").toString());
}
Run Code Online (Sandbox Code Playgroud)
Ger*_*Amy 10
那永远行不通。
static块执行发生在 spring 生命周期之前。Spring 将@Value在创建实例后注入这些属性值 ( ),因此,正如 jny 所说,您需要使用 @PostConstructor 例如(或 spring 为初始化提供的任何其他选项)而不是静态块初始化。
编辑:(添加一个例子)
@Value("${local.file.name}")
private String localFileName;
@Value("${remote.file.name"})
private String remoteFileName;
@PostConstruct
public void setup() {
File finalFilePath = new File(filePath); // assume filePath is already injected
if (!finalFilePath.exists() && !finalFilePath.isDirectory()) {
finalFilePath.mkdirs();
}
localFile = new File(StringBuffer(finalFilePath).append("/").append("localFileName").toString());
remoteFile = new File(StringBuffer(finalFilePath).append("/").append("remoteFileName").toString());
}
Run Code Online (Sandbox Code Playgroud)
因此,我有localFile和remoteFile变量,准备在这个bean使用,初始化后。
更多示例:http : //www.journaldev.com/2637/spring-bean-life-cycle-methods-initializingbean-disposablebean-postconstruct-predestroy-aware-interfaces
| 归档时间: |
|
| 查看次数: |
3247 次 |
| 最近记录: |