Вызовите метод после запуска приложения Spring BootJAVA

Программисты JAVA общаются здесь
Anonymous
Вызовите метод после запуска приложения Spring Boot

Сообщение Anonymous »

У меня есть приложение для Spring Java Spring, в котором есть планировщик, который вызывает асинхронную задачу из службы. Задача занимает несколько минут (обычно 3-5 минут), чтобы завершить. < /p>

code: < /p>

планировщик < /strong> < /p>

@Component
public class ScheduledTasks {
@Autowired
private MyService myService;

@Scheduled(cron = "0 0 */1 * * ?")
public void scheduleAsyncTask() {
myService.doAsync();
}
}
< /code>

service < /strong> < /p>

@Service
public class MyService {
@Async("threadTaskExecutor")
public void doAsync() {
//Do Stuff
}
}
< /code>

контроллер < /strong> < /p>

@CrossOrigin
@RestController
@RequestMapping("/mysrv")
public class MyController {
@Autowired
private MyService myService;

@CrossOrigin
@RequestMapping(value = "/", method = RequestMethod.POST)
public void postAsyncUpdate() {
myService.doAsync();
}
}
< /code>

Планировщик запускает задачу Async каждый час, но пользователь также может запускать ее вручную из пользовательского интерфейса. продолжается, когда метод работает, а затем он отключается после завершения метода. < /p>

Что -то подобное в моем классе службы: < /p>

@Autowired
private MyDbRepo myDbRepo;

@Async("threadTaskExecutor")
public void doAsync() {
if (!myDbRepo.isRunning()) {
myDbRepo.setIsRunning(true);
//Do Stuff
myDbRepo.setIsRunning(false);
} else {
LOG.info("The Async task is already running");
}
}
< /code>

Теперь проблема заключается в том, что флаг иногда застрял по разным причинам (перезагрузка приложения, некоторая другая ошибка приложения и т. Д.) < /p>

Как я могу это сделать? Есть ли способ запустить метод сразу после запуска приложения Spring Boot, откуда я могу вызвать метод из моего репо, чтобы установить флаги в базе данных?

Подробнее здесь: https://stackoverflow.com/questions/558 ... app-starts

Вернуться в «JAVA»