Запустить процесс в фоновом режиме с помощью весенней загрузки

Как я могу запустить какой-то процесс в фоновом режиме, используя Spring Boot? Это пример того, что мне нужно:

@SpringBootApplication
public class SpringMySqlApplication {

    @Autowired
    AppUsersRepo appRepo;

    public static void main(String[] args) {
        SpringApplication.run(SpringMySqlApplication.class, args);

        while (true) {
            Date date = new Date();
            System.out.println(date.toString());
            try {
                TimeUnit.SECONDS.sleep(3);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
}

2 ответа

Решение

Вы можете просто использовать @ Scheduled-Annotation.

@Scheduled(fixedRate = 5000)
public void reportCurrentTime() {
     log.info("The time is now " + System.currentTimeMillis()));
}

https://spring.io/guides/gs/scheduling-tasks/:

Запланированная аннотация определяет, когда выполняется конкретный метод. ПРИМЕЧАНИЕ. В этом примере используется fixedRate, который указывает интервал между вызовами методов, измеренный с момента начала каждого вызова.

Вы можете использовать асинхронное поведение. Когда вы вызываете метод и текущий поток действительно ожидает его завершения.

Создайте настраиваемый класс, подобный этому.

@Configuration
@EnableAsync
public class AsyncConfiguration {

    @Bean(name = "threadPoolTaskExecutor")
    public Executor threadPoolTaskExecutor() {
        return new ThreadPoolTaskExecutor();
    }
}

И затем используется в методе:

@Async("threadPoolTaskExecutor")
public void someAsyncMethod(...) {}

Посмотрите на весеннюю документацию для получения дополнительной информации

Другие вопросы по тегам