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旁边执行任务)
- 这种带循环的设计是最好的方法吗
- 如何在主循环中获取这些信息?我不能使用静态变量
- 在应用程序类中不要做类似的事情
只需定义一个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中执行此操作。你为什么要在春天以外的地方做呢?调度程序示例:我不打算在外面做。我只是不知道怎么在里面做。