Запустите приложение Spring Boot один раз и выйдите - PullRequest
3 голосов
/ 30 сентября 2019

У меня есть приложение Spring Boot, которое работает нормально. Теперь я хочу добавить функцию по требованию, чтобы импортировать некоторые данные из файла на диске (это будет использоваться один раз и никогда больше). У меня есть подключение к базе данных, готовые к использованию объекты DTO и т. Д., А также метод для импорта данных. Я хотел бы запустить мое приложение, например, с параметром командной строки (например, -file path / to / file). Он должен запустить приложение, выполнить мой метод импорта и завершить работу. Лучше всего не запускать встроенный Tomcat.

Я думал об отдельном аннотированном главном классе @SpringBootApplication и о запуске с -classpath, но я не знаю, хорошая ли это идея.

Теперь я думаю, что лучше сделать небольшой отдельный проект, но, возможно, есть хорошая функция, которая позволяет мне запускать свое приложение один раз и выполнять метод импорта.

Ответы [ 2 ]

3 голосов
/ 30 сентября 2019

для этого можно использовать CommandLineRunner интерфейс Spring, например:

(взято из данного руководства ):

@SpringBootApplication
public class SpringBootConsoleApplication 
  implements CommandLineRunner {

    private static Logger LOG = LoggerFactory
      .getLogger(SpringBootConsoleApplication.class);

    public static void main(String[] args) {
        LOG.info("STARTING THE APPLICATION");
        SpringApplication.run(SpringBootConsoleApplication.class, args);
        LOG.info("APPLICATION FINISHED");
    }

    @Override
    public void run(String... args) {
        LOG.info("EXECUTING : command line runner");

        for (int i = 0; i < args.length; ++i) {
            LOG.info("args[{}]: {}", i, args[i]);
        }
    }
}
0 голосов
/ 30 сентября 2019

Я сделал кое-что похожее с SpringBoot и JCommander, так как это делает создание приложений CLI действительно простым и предоставляет гораздо больше дополнительных функций, чем интерфейс CommandLineRunner.

-> http://jcommander.org/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...