Вы не можете автоматически связывать или вручную связывать статические поля в Spring. Вместо этого попробуйте сеттер впрыска:
private static NotifyService notifyService;
@Autowired
public void setNotifyService(NotifyService notifyService){
NotifyMain.notifyService= notifyService;
}
Но, тем не менее, не будет никакой гарантии, если NotifyService будет введен перед использованием. Вы также можете попробовать второй подход:
private static NotifyService notifyService;
@Autowired
private NotifyService autowiredNotifyService; //same as above but non-static this time. And you autowire this one.
@PostConstruct
private void init() {
NotifyMain.notifyService = this.autowiredNotifyService;
}
3-й подход -> Использовать инъекцию в конструктор:
private static NotifyService notifyService;
@Autowired
public NotifyMain(NotifyService notifyService){
NotifyMain.notifyService= notifyService;
}
Знайте, что автоматическое подключение к статическому полю нежелательно. НЕ следует этого делать.
Поскольку ваше приложение больше похоже на консольное приложение, этот подход также можно использовать:
@SpringBootApplication
public class NotifyMain implements CommandLineRunner {
@Autowired
private NotifyService notifyService;
public static void main(String[] args) {
SpringApplication.run(NotifyMain.class, args);
}
@Override
public void run(String... args) {
Timer timer1 = new Timer();
timer1.schedule(notifyService, 10, 10);
}