我们有个需求:需要在项目启动的时候,初始化一部分数据。
springboot 提供了 CommandLineRunner接口实现这个功能,通过实现接口,重写run方法
上代码
package com.example.demo;import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.env.SystemEnvironmentPropertySourceEnvironmentPostProcessor;
import org.springframework.core.annotation.Order;@SpringBootApplication
public class DemoApplication implements CommandLineRunner {public static void main(String[] args) {SpringApplication.run(DemoApplication.class, args);}// 启动时需要执行的逻辑@Overridepublic void run(String... args) throws Exception {System.out.println("1111111111111111111");}
}
这样就能实现简单的,启动服务执行逻辑。当我们需要顺序执行的时候,可以通过@Order注解指定执行顺序
package com.example.demo.controller;import org.springframework.boot.CommandLineRunner;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;/*** @author :chengang* @date :Created in 2021/11/6 12:45*/
@Component
public class InitController implements CommandLineRunner {// @Order设置value,数字越小,执行的越早 @Override@Order(value=2)public void run(String... args) throws Exception {System.out.println("2222222222222222222");}
}
结果: