Есть ли способ вызвать аннотацию @Scheduled в методе main при весенней загрузке? - PullRequest
0 голосов
/ 27 мая 2018

Я просто хочу периодически запускать метод основной загрузки с помощью аннотации @scheduler.Я указал некоторый дополнительный код, который выполнит некоторые предварительные действия, прежде чем он включит службы REST.

@EnableScheduling
@SpringBootApplication
public class SpringBootJDBCApp {

    @Autowired
    ITest testService;

    public static void main(String args[]) throws Exception  {
        PersistenceValidation.cloneGit();
        PersistenceValidation.dataPersistance();
        PersistenceValidation.cleanUp();
        ApplicationContext context = SpringApplication
                .run(SpringBootJDBCApp.class);
        ITest testService = context.getBean(ITestService.class);
        testService.getAllData();
    }
}

Я хочу запускать описанный выше основной метод каждые 10 секунд один раз.и добавлена ​​аннотация @Schedule для основного метода.Но он выдает исключение:

Ожидаемое поведение в соответствии с документом @Scheduler следует называть методом без аргументов []

Я хочу использовать @Schedulerпримечание в основном методе, как показано ниже:

@Scheduled(initialDelay = 1000, fixedRate = 10000)
public static void main(String args[]) throws Exception {
    PersistenceValidation.cloneGit();
    PersistenceValidation.dataPersistance();
    PersistenceValidation.cleanUp();
    ApplicationContext context = SpringApplication.run(SpringBootJDBCApp.class);
    ITest testService = context.getBean(ITestService.class);
    testService.getAllData();
}

Ошибка :

org.springframework.beans.factory.BeanCreationException: Ошибка при создании компонента с именем 'springBootJDBCApp': Инициализация компонента не удалась;Вложенное исключение - java.lang.IllegalStateException: Обнаружен недопустимый метод @Scheduled 'main': с помощью @ Scheduled

можно аннотировать только методы без аргументов * Есть ли другой способ выполнить эту задачу?Я хочу запускать все вещи, которые периодически упоминаются в основном методе.

Есть ли отведения?

1 Ответ

0 голосов
/ 27 мая 2018

Запланированный метод, аннотированный аннотацией @Scheduled, не должен иметь аргументов, потому что аннотация не предоставляет никаких входных данных.Spring-документы: @Scheduled sais:

Аннотированный метод не должен ожидать никаких аргументов.Обычно он имеет возвращаемый тип void;в противном случае возвращаемое значение будет игнорироваться при вызове через планировщик.

Вы аннотировали метод public static void main(String args[]), который имеет массив в качестве аргумента.Вы должны просто обернуть содержимое в main(String args[]) в другой метод.Обратите внимание, что вы вообще не используете args[].

...