静态方法中调用spring注入的方法 + 定时器实现

这次在使用定时任务的时候,总是被拦截器拦截 (要么改拦截器配置,最好不要动的东西),要么就改自己的方法 :
将方法改为静态方法 绕过拦截器。
此时面临 静态方法中使用注入的问题

在这里插入图片描述

/**
 * 人员基本信息
 * @author lhf
 */
@RequestMapping("/datacollect/rmbInfo")
@Controller
@Component //(把普通pojo实例化到spring容器中,相当于配置文件中的)
泛指各种组件,就是说当我们的类不属于各种归类的时候(不属于@Controller@Services等的时候),我们就可以使用@Component来标注这个类。
@Configuration // 定时 兼备Component 上面的 @Component 可以去掉
@EnableScheduling // 开启定时任务
public class AddRmbController extends BaseController {
	@Autowired
	private GenericDelegatorService delegatorService; // 重点 1
	@Autowired
   private static GenericDelegatorService genericDelegatorService; // 重点 2

	@PostConstruct //该注解被用来修饰一个非静态的void()方法。被他修饰的方法会在服务器加载Servlet的时候运行,并且只会被服务器执行一次。PostConstruct在构造函数之后执行,init()方法之前执行。
	public void init() { // 重点 3
		genericDelegatorService = delegatorService;
	}
	/**
	 * 添加定时任务 定时更新超龄人员表数据
	 */
	@Scheduled(cron = "0 0 0/1 * * ?")// 每个整点       0/5 * * * * ? 5
//	@Scheduled(fixedRate = 5000)
	public static void configureTasks() { // 重点 4 静态方法 使用注入
		System.out.println("执行定时任务时间: " + LocalDateTime.now());
		String sql1 = "delete from remind where remind_type = '1'";
		genericDelegatorService.runDeleteSql(sql1); // 重点 5 可以正常的使用
		int sum = genericDelegatorService.runsqlInt("SELECT count(*) FROM a01 WHERE TIMESTAMPDIFF(YEAR,a01.A0107,CURDATE())>'35' and AG0119 = '1'");
		String sql = "insert into remind (id,remind_type,matter,person_number) values (UUID(),'1','优秀年轻干部超龄人员',"+ sum +")";
		genericDelegatorService.runInsertSql(sql);
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值