в экзекутере, мне нужно ее запустить в начале приложения(как sheduled типа), но как правильно ее будет запустить в спринге? @Bean как-то не очень правильно, он же должен возвращать бин, а мне только запустить надо. Хочется что-то типа аннотации @Scheduled только без самого шедулинга, чтоб этот метод запустился в начала приложения
@PostConstruct -> вызов метода
Он стартап евент не то?
Ну это не совсем-то, мне просто хочется какой-то раннебл запустить в начале приложения, а не на создании какого-то бина
@EventListener(ApplicationReadyEvent.class) public void applicationReady() {}
А какая разница, на синглтон отработает однократно. При условии, что у тебя одна реплика
Тоже как-то не очень красиво, хочется это все в один конфигурейшн и сделать 5 методов, которые будут запускать вот такие таски(как 5 задач на расписании в Scheduled)
Ну технически через @Bean тоже будет работать, но может чего симпатичнее есть
если тебе нужен для этого весь рабочий контекст спринга, то, пожалуй, только евенты
SRP нарушает, не надо
Ну ок, согласен
Сделай один "инфраструктурный бин", который из метода PostConstruct вызывает бизнесовый метод другого сервиса
Ну, чисто теоретически, можно сделать метод принимающий нужный бин и повесить на него аннотацию Autowired и тоже должно отработать (главное чтобы это было в синглтоне)
Обсуждают сегодня