Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaSpring引导:HTTP处理程序旁边的主循环_Java_Spring_Spring Boot - Fatal编程技术网

JavaSpring引导:HTTP处理程序旁边的主循环

JavaSpring引导:HTTP处理程序旁边的主循环,java,spring,spring-boot,Java,Spring,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 {

我从弹簧靴开始

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处理程序组件之外,我喜欢有一个主循环(例如,用于在HTTP旁边执行任务)

  • 这种带循环的设计是最好的方法吗
我正在使用配置绑定(@Value和@ConfigurationProperties)

  • 如何在主循环中获取这些信息?我不能使用静态变量

    • 在应用程序类中不要做类似的事情

      只需定义一个Springbean并注释一个函数,该函数包含您希望定期执行的任何逻辑,并且注释是使用@Scheduled

      有关更多信息,请查看以下内容:

      请参阅spring文档。简而言之:

      将@EnableScheduling添加到starter/config:

      @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
          }
      }
      

      我认为这不是更好的设计。 如果您希望执行非HTTTP任务,那么我建议您创建新bean并使用@Scheduled,并且可以指定您希望执行该任务的时间

      @Component
      public class YourTask{
      @Scheduled(fixedRate = 5000)
          public void reportCurrentTime() {
              //your task
          }
      }
      

      您可以使用@Scheduled(fixedDelay=10000)在springBoot中执行此操作。你为什么要在春天以外的地方做呢?调度程序示例:我不打算在外面做。我只是不知道怎么在里面做。