如何在 Spring 启动时从命令行解析 link?

How to parse link from command line in Spring boot?

link 到 XML 文件作为命令行参数传递给应用程序。 link 具有以下格式:type: path,其中 type 是 link 的类型,path 是文件的路径。 link 定义以 XML 格式加载数据的来源。 Link type(类型):file(外部文件),classpath(类路径中的文件),url(URL)。示例:文件:input.xml,类路径:input.xml,url:文件:/input.xml。 我怎样才能收到文件?我试过@Value,但它只能传递常量。

实施 ApplicationRunner 通过获得第一个位置参数 ApplicationArguments。 有多种方法可以定位资源,示例使用 DefaultResourceLoader.

import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.core.io.DefaultResourceLoader;
import org.springframework.core.io.Resource;

@SpringBootApplication
@NoArgsConstructor @ToString @Log4j2
public class Command implements ApplicationRunner {
    public static void main(String[] argv) throws Exception {
        new SpringApplicationBuilder(Command.class).run(argv);
    }

    @Override
    public void run(ApplicationArguments arguments) throws Exception {
        /*
         * Get the first optional argument.
         */
        String link = arguments.getNonOptionArgs().get(0);
        /*
         * Get the resource.
         */
        Resource resource = new DefaultResourceLoader().getResource(link);
        /*
         * Command implementation; command completes when this method
         * completes.
         */
    }
}