我想在spring启动应用程序启动之前向application.properties写一个属性。
Properties properties = new Properties();
try {
properties.load(new FileInputStream("src/main/resources/application.properties"));
} catch (FileNotFoundException e) {
e.printStackTrace();
}
if (properties.getProperty("name") == null) {
OutputStream os = null;
Properties prop = new Properties();
prop.setProperty("name", "WriteTheName");
try {
os = new FileOutputStream("src/main/resources/application.properties", true);
prop.store(os, "Dynamic Property File");
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
else
{
System.out.println("Already available Name %%%%%%%%%%%%%%%%%%%%%%%");
}
上面的代码,我使用的是CommandLineRunner的run方法。这是在应用程序启动后写入值。 如果有办法在应用程序启动前写入属性值,请告诉我。
答案 0 :(得分:0)
构建并启动应用后,您将无法访问src/main/resources
。
在启动应用程序之后但在开始加载Spring上下文之前编写属性文件不是一个好方法。我看到的少数用例之一是在应用程序安装期间,可能必须生成一些随机ID,但这是安装程序的工作,而不是应用程序的工作。
或者,您可以将属性值传递给Spring Boot应用程序:
假设您要使用的属性名为:my.property.key
:
java -Dmy.property.key=value -jar application.jar
java -jar application.jar --my.property.key=value
MY_PROPERTY_KEY=value java -jar application.jar