结果:创建一个新类来实现ApplicationRunner接口,在这里进行第一次的启动时启动定时器,如此就能使用@Value等注解,将application文件中的内容使用Spring的方式读取到。
过程:我需要一个定时器,然后正好项目依赖了hutool,就百度了下如何使用hutool的定时器,之前知道hutool有这个东西,但是没用过。
hutool的定时器使用挺简单的,然后鉴于项目第一次启动的时候就要执行一次定时器,然后我就直接在Spring boot的启动类中,写了个代码:
public static voidmain(String[] args) {
SpringApplication.run(App.class, args);
CronUtil.setMatchSecond(true);
CronUtil.start();new StockPriceTask().stockPrice(); //手动调用定时器的方法
}
嗯~ o(* ̄▽ ̄*)o,很简单哦,然后就被这么一个new给坑死了,今天项目要部署,然后这里直接就凉了。
对方要求使用外部配置文件的方法,也就是说我必须得把定时器中用到的一系列值全部放入application文件,然后就出现问题了,我直接new的定时器,导致不是被Spring管理的,没有用到依赖注入。实际上,不管是不是new出来的类实例,把这个定时器的初启动写在这个main方法中就已经凉凉了。因为main方法是一个静态的,你@Autowired进来的对象只能是非静态的,然后main方法不能使用。<