Запустите задания cron в зависимости от конкретных условий с помощью весенней загрузки. Что не так в приведенном ниже Java-коде - PullRequest
0 голосов
/ 09 октября 2019

Я пытаюсь запустить задания cron в зависимости от конкретных условий, используя весеннюю загрузку. Например: if(bankName=="Sbi"), затем запустите планировщик заданий sbi, if(bankName =="City"), затем запустите планировщик заданий в городе и т. Д.

Я получаю название банка через базу данных (служба, которая извлекает банковские реквизиты по номеру счета клиента) и я не могу запустить задание на основе указанного условия.

Я ожидаю вывода, так как имя банка - «sbi», затем запустите задание task1, а имя банка - «city», затем запустите задание task2. Но он запускает задание task3 (имя банка 'hdfc'), даже если условие if не выполнено.

Ниже приведен фрагмент кода.

Примечание: Я поставилточка останова в файле SchedulingTask.java для целей отладки, но она не достигает этой точки останова. Пожалуйста, объясните мне, как я могу решить эту проблему.

   @SpringBootApplication
            @EnableScheduling
            public class SpringBootApp {
                public static void main(String[] args) {
                     SpringApplication.run(SpringBootApp.class, args);
                    // new SchedulingTask();
                }
            }

            @Configuration
            @EnableScheduling
            public class SchedulingTask {
            /* I have to get the Bankname from database  for testing i am hard-coding the name*/
                    String [] bankName = {"Sbi","City"};        
                     void  foo(String[] bankName) {
                        for (String name : bankName) {
                            setBankName(name);
                        }       
                    }

                public  void setBankName(String name) {
                    if(name.equalsIgnoreCase("sbi")) {  
                        new Task1();
                    } 
                    else if(name.equalsIgnoreCase("City")) {
                                new Task2();
                    } 
                    else if(name.equalsIgnoreCase("Hdfc")) {
                                 new Task3();
                    }
                }   
            }

@Configuration
@EnableScheduling
public class Task1 {

    @Bean
    @ConditionalOnProperty(value = "Sbi", matchIfMissing = true, havingValue = "true")
    public SchedulingTask1 scheduledSbiJob() {
        return new SchedulingTask1();
    }

}

@Configuration
@EnableScheduling
public class Task2 {

    @Bean
    @ConditionalOnProperty(value = "City", matchIfMissing = true, havingValue = "true")
    public SchedulingTask2 scheduledCityJob() {
        return new SchedulingTask2();
    }

}

@Configuration
@EnableScheduling
public class Task3 {

    @Bean
    @ConditionalOnProperty(value = "Hdfc", matchIfMissing = true, havingValue = "true")
    public SchedulingTask3 scheduledHdfcJob() {
        return new SchedulingTask3();
    }

}

@Component
public class SchedulingTask1 {
    @Scheduled(cron="*/2 * * * * ?")
    public void sbiTask() {
        System.out.println("sbiTask method excuted at every 2 seconds.  Current time is :: " +new Date());
    }
}

@Component
public class SchedulingTask2 {
    @Scheduled(cron="*/4 * * * * ?")
    public void cityTask() {
        System.out.println("cityTask method excuted at every 4 seconds.  Current time is :: " +new Date());
    }
}

@Component
public class SchedulingTask3 {
    @Scheduled(cron="*/6 * * * * ?")
    public void hdfcTask() {
        System.out.println("hdfcTask method excuted at every 6 seconds.  Current time is :: " +new Date());
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...