package com.hl.springbootrunner.service;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;
@Component //被 spring 容器管理
@Order(1) //如果多个自定义的 ApplicationRunner ,用来标明执行的顺序
public class ApplicationRunnerStartService implements ApplicationRunner {
private static final Logger logger = LoggerFactory.getLogger(ApplicationRunnerStartService.class);
@Override
public void run(ApplicationArguments args){
logger.info("===SpringBoot项目启动后,执行ApplicationRunnerStartService方法,进行初始化操作 ============= 1");
}
}
package com.hl.springbootrunner.service;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;
@Component
@Order(2)
public class ApplicationRunnerStartService2 implements ApplicationRunner {
private static final Logger logger = LoggerFactory.getLogger(ApplicationRunnerStartService2.class);
@Override
public void run(ApplicationArguments args) {
logger.info("===SpringBoot项目启动后,执行ApplicationRunnerStartService2方法,进行初始化操作 ============= 2");
}
}
查看执行结果可以知道,这俩个方法在容器启动的时候也自动执行了,这里需要主要的是,如果有多个类实现了ApplicationRunner
接口,可以用@Order
来指定执行顺序,数值越小,优先级越高
package com.hl.springbootrunner.service;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.CommandLineRunner;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;
@Component //被 spring 容器管理
@Order(10) //如果多个自定义的 CommandLineRunner,用来标明执行的顺序,数字越小,顺序越靠前
public class CommandLineRunnerStartService implements CommandLineRunner{
private static final Logger logger = LoggerFactory.getLogger(CommandLineRunnerStartService.class);
@Override
public void run(String... args) throws Exception {
logger.info("===SpringBoot项目启动后,执行CommandLineRunnerStartService方法,进行初始化操作 =============");
//执行自己的业务逻辑
}
}
package com.hl.springbootrunner.service;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
@Component
public class OACheckScheduleTask {
private static final Logger LOG = LoggerFactory.getLogger(OACheckScheduleTask.class);
//@Scheduled(cron = "0 0 2 1/1 * ? ")//每天02:00执行
@Scheduled(fixedDelay = 1 * 60 * 1000)//每1分钟一次
public void configureTasks() {
LOG.info("**********************************************************************************************");
LOG.info("***************************检查人员数据异常信息开始************************************************");
LOG.info("**********************************************************************************************");
/**
* 获取角色配置离职人员配置信息
*/
LOG.info("**********************************************************************************************");
LOG.info("***************************检查人员数据异常信息结束************************************************");
LOG.info("**********************************************************************************************");
}
}
注意:
在启动类上加上@EnableScheduling
注解
这一种方法和上面的方法不一样,这是一个定时任务
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://blog.csdn.net/weixin_43296313/article/details/123352590
内容来源于网络,如有侵权,请联系作者删除!