2016-03-10 5 views
5

2 बातों के लिए देख रहा हूँ:वसंत बूट - विकास के दौरान @ कैचबल को अक्षम कैसे करें?

  1. कैसे स्प्रिंग बूट "देव" प्रोफाइल के साथ विकास के दौरान सभी कैशिंग निष्क्रिय करने के लिए। एप्लिकेशन.प्रोपर्टीज में इसे बंद करने के लिए सामान्य सेटिंग होने के लिए सीम नहीं है। सबसे आसान तरीका क्या है?

  2. किसी विशिष्ट विधि के लिए कैशिंग को अक्षम कैसे करें? मैं इस तरह स्पेल का उपयोग करने की कोशिश की:

    @Cacheable(value = "complex-calc", condition = "#{${spring.profiles.active} != 'dev'}") public String someBigCalculation(String input){ ... }

लेकिन मैं यह काम करने के लिए मिल सकता है। इस से संबंधित SO पर कुछ प्रश्न हैं, लेकिन वे एक्सएमएल कॉन्फ़िगरेशन या अन्य चीजों का संदर्भ लेते हैं, लेकिन मैं स्प्रिंग बूट 1.3.3 का उपयोग कर रहा हूं और यह ऑटो कॉन्फ़िगरेशन का उपयोग करता है।

मैं चीजों को अधिक जटिल नहीं करना चाहता हूं।

+7

अपने 'application-dev.properties' में' spring.cache.type = NONE' जोड़ें। –

+0

'spring.cache.type = नहीं 'कैशिंग बंद नहीं करता है, यह चीजों को कैश होने से रोकता है। यानी यह अभी भी आपके कार्यक्रम में एओपी/इंटरसेप्टर स्टैक की 27 परतें जोड़ता है, यह सिर्फ कैशिंग नहीं करता है। यह निर्भर करता है कि उसका मतलब क्या है "इसे बंद करें"। –

उत्तर

13

कैश का प्रकार डिफ़ॉल्ट रूप से स्वचालित रूप से पता चला और कॉन्फ़िगर किया गया है। हालांकि आप अपनी कॉन्फ़िगरेशन में spring.cache.type जोड़कर उपयोग करने के लिए कौन सी कैश प्रकार निर्दिष्ट कर सकते हैं। इसे अक्षम करने के लिए मान को NONE पर सेट करें।

आप किसी विशेष प्रोफ़ाइल का यह क्या करना चाहते हैं के रूप में इसे जोड़ने कि प्रोफाइल के लिए इस मामले में application.propertiesapplication-dev.properties को संशोधित करने और जोड़ने

spring.cache.type=NONE 

यह कैशिंग अक्षम हो जाएगा।

+1

एसपीईएल का उपयोग करके मेरे दूसरे प्रश्न के बारे में क्या? कुछ विशिष्ट तरीके हैं जिन्हें मैं विकास के दौरान कैशिंग नहीं चाहता हूं। – Wouter

2

अपने दूसरे प्रश्न के लिए कुछ इस तरह करते हैं:

एक विधि है कि निर्धारित करता है या नहीं, एक विशेष प्रोफ़ाइल सक्रिय है (पर्यावरण अपने इंजेक्ट किया जाता है पर्यावरण)

boolean isProfileActive(String profile) { 
    return Arrays.asList(environment.getActiveProfiles()).contains(profile); 
} 

तो का उपयोग करें कि अपने स्पेल के लिखें संचित करने योग्य एनोटेशन पर हालत

-1

अगर यह SpringBoot परियोजना है, बाहर आवेदन कक्षा में @EnableCaching टिप्पणी, जैसे:

//@EnableCaching 
@SpringBootApplication 
public class CacheapplicationApplication{ 
    public static void main(String[] args){} 

} 
+1

वाह, आप कैशिंग के लिए बस मौजूद सभी कोड को भी हटा सकते हैं ... – T3rm1

+0

कृपया प्रश्न देखें .. कोड को एनवी के अनुसार बदला नहीं जाना चाहिए। यह विन्यास संचालित होना चाहिए – navaltiger

संबंधित मुद्दे