SpringBoot项目启动tomcat时自动运行某个方法的两种方式

1.采用加注解方式      在方法上加@PostConstruct

 //读取阻塞队列,多线程执行
    @PostConstruct
    public void refundOrder() {
        System.out.println("启动tomcat时自动调用");
        RBlockingDeque blockingDeque = redissonClient.getBlockingDeque("jiuyang_order_message");
        scheduledThreadPoolExecutor.execute(new SendingTask(blockingDeque));

        RBlockingDeque blockingDeque2 = redissonClient.getBlockingDeque("jiuyang_order_zhang");
        scheduledThreadPoolExecutor.execute(new SendingTask(blockingDeque2));
    }
2.采用实现ApplicationRunner接口.重写run方法 ,run方法调用的方法都会在启动tonmcat是时执行
import com.cncbox.mall.consumer.service.impl.RefundOrderServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.stereotype.Component;

/**
 * @author : zhang sq
 * @date : 2019/8/22 16:02
 **/

@Component
public class ApplicationRunnerImpl implements ApplicationRunner {

    @Autowired
    private RefundOrderServiceImpl refundOrderService;

    //tomcat启动执行此方法
    @Override
    public void run(ApplicationArguments args) throws Exception {
        refundOrderService.refundOrder(); //正常订单超时未付款自动关闭
        refundOrderService.automatic(); //自动收货
        refundOrderService.comment();  //自动好评
    }
}

 

你可能感兴趣的:(SpringBoot)