springboot项目如何在tomcat启动的时候,启动一个初始化的线程
时间: 2023-11-17 14:04:24 浏览: 251
xxl-job-springboot:将xxl-job修改为springboot版本 本地测试直接启动就可以了。不再需要手动部署tomcat
可以通过在 Spring Boot 项目中实现 `ApplicationRunner` 或 `CommandLineRunner` 接口来在应用启动时执行一些初始化操作。这两个接口都只有一个方法,分别为 `run(ApplicationArguments args)` 和 `run(String... args)`。
下面是一个示例,展示如何使用 `ApplicationRunner` 实现在 Tomcat 启动时启动一个初始化线程:
1. 创建一个实现 `ApplicationRunner` 接口的类,例如 `InitThreadRunner`。
```java
@Component
public class InitThreadRunner implements ApplicationRunner {
@Override
public void run(ApplicationArguments args) throws Exception {
// 在这里编写初始化线程的逻辑
Thread initThread = new Thread(() -> {
// do something
});
initThread.start();
}
}
```
2. 在 `run` 方法中编写初始化线程的逻辑,例如创建一个新的线程并启动它。
3. 将 `InitThreadRunner` 类标记为 `@Component` 注解,以便 Spring Boot 能够扫描到该类并自动执行 `run` 方法。
```java
@Component
public class InitThreadRunner implements ApplicationRunner {
// ...
}
```
4. 运行 Spring Boot 项目,并查看控制台输出,可以看到初始化线程已经被启动了。
```text
2021-10-01 10:00:00.000 INFO 12345 --- [ main] com.example.demo.DemoApplication : Starting DemoApplication using Java 8 on localhost with PID 12345
2021-10-01 10:00:01.000 INFO 12345 --- [ main] com.example.demo.DemoApplication : Started DemoApplication in 1.234 seconds (JVM running for 5.678)
2021-10-01 10:00:01.001 INFO 12345 --- [ main] com.example.demo.InitThreadRunner : Starting init thread...
```
阅读全文