Java Spring Boot - 如何让用户从命令行切换数据文件? [重复]

问题描述 投票:0回答:1

我正在使用一个包含数千行的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...
java json spring-boot
1个回答
1
投票

通过使用application.propertiesapplication.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"
© www.soinside.com 2019 - 2024. All rights reserved.