Я пытаюсь выяснить, как создать автономное приложение Spring Boot. Разумеется, для того, чтобы вещи были автоуведомлены, требуется исходная начальная точка. Если я просто попробую Autowire класс для запуска задания, он равен нулю, даже если я сделаю его статическим.Создать автономное приложение для загрузки Spring
Есть ли способ использовать Spring @Services в автономном не-веб-приложении?
@SpringBootApplication
public class MyApplication {
@Autowired
private static JobRunnerService job;
public static void main(String[] args) {
SpringApplication.run(MyApplication.class, args);
job.send(); //job is null !
}
}
Так первый проводной в статическом JobRunnerService к основной проточной MyApplication JobRunner (обслуживания) класс имеет нестатическое SshSessionService проводное в него. SshSession (Service), наконец, просто имеет конструктор no-arg.
@Service("jobRunnerService")
public final class JobRunner implements JobRunnerService{
@Autowired
private SshSessionService ssh;
@Autowired
public JobRunner(SshSessionService ssh){
this.ssh = ssh;
}
public void sendToAgent() { ....
}
@Service("sshSessionService")
public class SshSession implements SshSessionService {
public SshSession() {
}
}
Начинается с нуля при задании задания JobRunnerService.
Autowiring on static fields не работает. Если вы хотите запустить метод при запуске, создайте компонент, который реализует интерфейс CommandLineRunner или ApplicationRunner. Бобы, которые реализуют эти интерфейсы, автоматически запускаются Spring Boot, как только приложение будет готово. – dunni
Dunni is right, @JohnnyO –