启动时

1.实现CommandLineRunner接口

@Component
@Order(1)
public class CommandLineRunnerTest implements CommandLineRunner {
    @Override
    public void run(String... args) throws Exception {

        System.out.println("这是测试CommandLineRunner的示例。");
    }
}

2.实现ApplicationRunner接口

@Component
@Order(2)
public class ApplicationRunnerTest implements ApplicationRunner {
    @Override
    public void run(ApplicationArguments args) throws Exception {

        System.out.println("这是测试ApplicationRunner接口");
    }
}

@Order注解:如果有多个实现类,而你需要他们按一定顺序执行的话,可以在实现类上加上@Order注解。@Order(value=整数值)。SpringBoot会按照@Order中的value值从小到大依次执行。也就是先执行 1 再执行 2

@Component注解:把普通pojo实例化到spring容器中,泛指各种组件,就是说当我们的类不属于各种归类的时候(@Controller、@Services等的时候),我们就可以使用@Component来标注这个类。

结束时

1.实现DisposableBean接口

@Component
public class DisposableBeanTest implements DisposableBean {
    @Override
    public void destroy() throws Exception {

        System.out.println("springboot程序结束  implements DisposableBean ");
    }
}

2.通过@PreDistroy注解

@Component
public class ExitCode{
    @PreDestroy
    public void exit(){
        System.out.println("springboot程序结束 执行@PreDestroy");
    }
}