Запустить процесс в фоновом режиме с помощью весенней загрузки
Как я могу запустить какой-то процесс в фоновом режиме, используя 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(...) {}
Посмотрите на весеннюю документацию для получения дополнительной информации