Java Spring-BOOT: main-l oop рядом с HTTP-обработчиком - PullRequest
0 голосов
/ 04 марта 2020

Я начинаю с Spring BOOT.

public class App 
{
    public static void main (String [] args) throws Exception
    {
        System.out.println ("--------------------");

        SpringApplication.run (App.class, args);

        for (;;)   // my main loop
        {
            // do something permanently
            Thread.sleep (10000);
        }    
    }  
}

Помимо имеющихся у меня компонентов-обработчиков HTTP, мне нравится иметь main-l oop (например, для выполнения задач помимо HTTP).

  • Является ли этот дизайн с l oop лучшим способом сделать это?

Я использую привязку конфигурации (тоже @Value и @ConfigurationProperties).

  • Как я могу получить эту информацию в моем main-l oop? Я не могу сделать это с переменными состояния c.

Ответы [ 3 ]

3 голосов
/ 04 марта 2020

Не делайте ничего подобного в вашем классе Application.

Просто определите пружинный компонент и аннотируйте функцию, которая содержит любые логики c, которые вы хотите регулярно выполнять, и аннотируйте с помощью @Scheduled.

Для получения дополнительной информации посмотрите следующее: https://www.baeldung.com/spring-scheduled-tasks

2 голосов
/ 04 марта 2020

См. планировщик пружина до c. Вкратце:

Добавить @EnableScheduling для запуска / конфигурации:

@SpringBootApplication
@EnableScheduling
public class SchedulingTasksApplication {

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

пример компонента планировщика:

@Component
public class ScheduledTasks {
    @Scheduled(fixedRate = 10000)
    public void reportCurrentTime() {
        // do anything
    }
}
1 голос
/ 04 марта 2020

Не думаю, что это будет лучший дизайн. Если вы хотите выполнить задачу не HTTTP, то я бы порекомендовал создать новый компонент и использовать @Scheduled и указать время, когда вы хотите это сделать.

@Component
public class YourTask{
@Scheduled(fixedRate = 5000)
    public void reportCurrentTime() {
        //your task
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...