这个问题在这里已有答案:
我正在使用一个包含数千行的JSON文件(用作“数据库”)。它被反序列化,然后应用程序的逻辑基于反序列化的pojos。
我想让用户在命令行中运行应用程序之前切换这些JSON文件:(例如)
java -jar target/app.jar -source=resources/data.json
该应用程序是使用Spring Boot构建的,我一直在阅读这样的文件:
file = ResourceUtils.getFile("/Users/App/src/main/resources/data.json");
我已经找到了一些关于加载属性的说明,但我想要做的是加载一个完整的文件,我似乎找不到可靠的指令。
编辑:
application.properties:
source = filepath
我DAO的片段:
@Repository
public class SomethingDao {
private ObjectMapper mapper = new ObjectMapper();
private File file;
@Value("${source}")
private String source;
{
try {
file = ResourceUtils.getFile(source);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
try {
something = mapper.readValue(file, Something.class);
} catch (IOException e) {
e.printStackTrace();
}
}
我尝试使用的命令:
java -jar target/app.jar -source="src/main/resources/data.json"
java -jar target/app.jar -source="/data.json"
java -jar target/app.jar --source="src/main/resources/data.json"
java -jar target/app.jar --source="/data.json"
and so on...
通过使用application.properties
或application.yml
实现此目的,在application.properties
中指定属性并通过命令行doc覆盖它
application.properties
source = filepath
在服务或商务舱
@Component
public class MyBean {
@Value("${source}")
private String name;
public void someMethod() {
file = ResourceUtils.getFile(source);
}
}
命令
java -jar target/app.jar -source="src/main/resources/data.json"