मैं वसंत डिफ़ॉल्ट सेट अप करने के लिए spring-boot
का उपयोग कर रहा हूं। मैं @EnableScheduling
तंत्र का उपयोग करना चाहता हूं, और अपने कार्यों को सशर्त निर्धारित करना चाहता हूं।वसंत-बूट में टास्कशेड्यूलर को कैसे सक्षम करें?
इसलिए मुझे SchedulingConfigurer
लागू करना होगा और TaskScheduler
स्पष्ट करें।
लेकिन TaskScheduler
इंजेक्शन करते समय, मुझे निम्न त्रुटि मिलती है। लेकिन क्यों वसंत-बूट स्वचालित रूप से एक शेड्यूलर प्रदान नहीं करता है?
@Configuration
@EnableAutoConfiguration
@EnableScheduling
public class AppConfig {
}
@Service
public class JobService implements SchedulingConfigurer {
@Autowired
private TaskScheduler taskScheduler;
//schedule the task dynamically
@Override
public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
taskRegistrar.setScheduler(taskScheduler); //fails
taskRegistrar.addTriggerTask(task, trigger);
}
}
त्रुटि:
Caused by: org.springframework.beans.factory.BeanCreationException: Could not autowire field: private org.springframework.scheduling.TaskScheduler; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [org.springframework.scheduling.TaskScheduler] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:561)
at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:88)
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:331)
... 15 more
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [org.springframework.scheduling.TaskScheduler] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
at org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoSuchBeanDefinitionException(DefaultListableBeanFactory.java:1308)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1054)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:949)
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:533)
... 17 more
आप एक्सएमएल config के माध्यम से सेटअप अनुसूचक करने की कोशिश की है:
इन परिवर्तनों से आपके कोड कुछ इस तरह की तलाश में छोड़? मेरे लिए मुझे एनोटेशन संचालित कॉन्फ़िगरेशन तरीके से कुछ समस्याएं हैं, लेकिन यह xml कॉन्फ़िगरेशन के साथ चिकनी हो जाती है। – sphinks
क्योंकि यह नहीं करता है। सभी को शेड्यूलर की आवश्यकता नहीं है और पता लगाना वास्तव में संभव नहीं है। तो आपको अपना खुद का जोड़ना होगा। –
यह भी थोड़ा अजीब बात है कि आपकी 'शेड्यूलिंग कॉन्फ़िगरर' एक सेवा है, जो '@ कॉन्फ़िगरेशन' कक्षा होने के लिए अधिक तार्किक होगी। –