मैं @Scheduled
एनोटेशन का उपयोग करके वसंत में क्रॉन स्टाइल पैटनर्स के साथ निर्धारित नौकरियों को परिभाषित कर रहा हूं।वसंत में अनुसूचित नौकरियों को सशर्त रूप से सक्षम या अक्षम कैसे करें?
क्रॉन पैटर्न कॉन्फ़िगरेशन गुण फ़ाइल में संग्रहीत है। असल में दो गुण फ़ाइलें हैं: एक डिफ़ॉल्ट कॉन्फ़िगरेशन, और एक प्रोफ़ाइल कॉन्फ़िगरेशन जो पर्यावरण निर्भर है (उदा। देव, परीक्षण, प्रोड ग्राहक 1, प्रोड ग्राहक 2 इत्यादि) और कुछ डिफ़ॉल्ट मानों को ओवरराइड करता है।
मैंने अपने वसंत संदर्भ में एक संपत्ति प्लेसहोल्डर बीन कॉन्फ़िगर किया है जो मुझे मेरी संपत्ति फ़ाइलों से मूल्य आयात करने के लिए ${}
शैली प्लेसहोल्डर का उपयोग करने की अनुमति देता है।
काम सेम इस तरह दिखता है:
@Component
public class ImagesPurgeJob implements Job {
private Logger logger = Logger.getLogger(this.getClass());
@Override
@Transactional(readOnly=true)
@Scheduled(cron = "${jobs.mediafiles.imagesPurgeJob.schedule}")
public void execute() {
//Do something
//can use DAO or other autowired beans here
}
}
मेरी संदर्भ एक्सएमएल के प्रासंगिक भागों:
<!-- Enable configuration of scheduled tasks via annotations -->
<task:annotation-driven/>
<!-- Load configuration files and allow '${}' style placeholders -->
<bean class="org.springframework.context.support.PropertySourcesPlaceholderConfigurer">
<property name="locations">
<list>
<value>classpath:config/default-config.properties</value>
<value>classpath:config/environment-config.properties</value>
</list>
</property>
<property name="ignoreUnresolvablePlaceholders" value="true"/>
<property name="ignoreResourceNotFound" value="false"/>
</bean>
मैं वास्तव में यह पसंद है। यह न्यूनतम एक्सएमएल के साथ काफी सरल और साफ है।
हालांकि मेरे पास एक और आवश्यकता है: इनमें से कुछ नौकरियों को कुछ मामलों में पूरी तरह से अक्षम किया जा सकता है।
तो, इससे पहले कि मैं उन्हें प्रबंधित करने के स्प्रिंग इस्तेमाल किया मैं उन्हें मैन्युअल रूप से बनाया है और एक बूलियन पैरामीटर अगर नौकरी या सक्षम होने के लिए नहीं है निर्दिष्ट करने के लिए config फाइल में क्रॉन पैरामीटर, के साथ है:
jobs.mediafiles.imagesPurgeJob.enable=true or false
jobs.mediafiles.imagesPurgeJob.schedule=0 0 0/12 * * ?
इस कॉन्फ़िगरेशन पैरामीटर के आधार पर, वसंत में सशर्त रूप से बनाने या बस स्पष्ट रूप से बीन को अनदेखा करने के लिए मैं इस पैरामीटर का उपयोग कैसे कर सकता हूं?
एक स्पष्ट कामकाज एक क्रॉन पैटर्न को परिभाषित करना होगा जो कभी मूल्यांकन नहीं करेगा, इसलिए नौकरी कभी निष्पादित नहीं होती है। लेकिन बीन अभी भी बनाया जाएगा और कॉन्फ़िगर थोड़ा अस्पष्ट होगा, इसलिए मुझे लगता है कि एक बेहतर समाधान होना चाहिए।
कोई विचार?
आप कभी भी इस के लिए एक जवाब मिला? – Chaos
@Cos: नहीं, अभी भी इसके लिए अतिरिक्त बुलियन संपत्ति का उपयोग कर। –
"एक क्रॉन पैटर्न जो कभी मूल्यांकन नहीं करेगा" यह काम नहीं करता है, वसंत शेड्यूलर कोड को वैध "अगली रन डेट" की आवश्यकता होती है अन्यथा यह अपवाद फेंकता है। (सभी संस्करणों के लिए सच नहीं हो सकता है) –