Я пытаюсь запустить задания 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());
}
}