1、springboot工程启动后,想要自动执行一些特定的代码,可以通过CommandLineRunner接口来实现
package com.test.test1;
import org.springframework.boot.CommandLineRunner;
import org.springframework.stereotype.Component;
@Component
public class test implements CommandLineRunner {
@Override
public void run(String... strings) throws Exception {
System.out.println(">>>>>>>>>>>>>>>>>>1");
}
}
2、如果需要以上的任务需要按照指定的顺序执行可以通过两种方式实现
a、可以额外实现org.springframework.core.Ordered 来指定执行顺序
package com.test.test1;
import org.springframework.boot.CommandLineRunner;
import org.springframework.core.Ordered;
import org.springframework.stereotype.Component;
@Component
public class aaa implements CommandLineRunner,Ordered {
@Override
public void run(String... strings) throws Exception {
System.out.println(">>>>>>>>>>>>>>>>>>1");
}
//指定所有特定任务中第三个执行
@Override
public int getOrder() {
return 3;
}
}
b、可以使用@Order(1)注解实现
package com.test.test1;
import org.springframework.boot.CommandLineRunner;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;
@Component
@Order(10)//指定在所有特定任务中第10个执行
public class bb implements CommandLineRunner {
@Override
public void run(String... strings) throws Exception {
System.out.println("=========>10");
}
}
3、springboot优雅的停掉服务
很多时候,在服务停掉之前要做很多操作,可以通过两种方式实现
a、通过@PreDestroy注解实现优雅停机
package com.test.test1;
import org.springframework.stereotype.Component;
import javax.annotation.PreDestroy;
//测试jvm销毁钩子函数
@Component
public class dd {
@PreDestroy
public void PreDestroy(){
System.out.println("==========>>>>>>我被销毁了");
}
}
b、通过实现DisposableBean接口
package com.uccc.ll;
import org.springframework.beans.factory.DisposableBean;
public class ee implements DisposableBean {
@Override
public void destroy() throws Exception {
System.out.println("#######>>>>>我被销毁了!");
}
}
4、