2016-12-06 7 views
7

मैं अपने @SpringBootApplication रों के कुछ की classpath पर @Configuration वर्ग निम्नलिखित है:स्प्रिंग बूट: विन्यास कक्षा बस नजरअंदाज कर दिया है और लोड नहीं

@Configuration 
@Import({MainConfig.class, RestConfig.class}) 
public class ApiConfig { 

    @Bean 
    @Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE) 
    public Client client() throws ExecutionException, InterruptedException { 
     return service.create(Client.class); 
    } 

} 

मैं दो सेवाओं है कि इस config (अलग नाम के लिए उपयोग किया Client कक्षाएं)।

सेवा 1 सही ढंग से शुरू होता है और इस कॉन्फ़िगर को लोड करता है। मैं शुरूआत के दौरान देख सकता हूं कि प्रकार ApiConfig का एक बीन बेसब्री से शुरू किया गया था।

सेवा 2 गलत तरीके से शुरू होता है: उपरोक्त कॉन्फ़िगरेशन क्लास को केवल अनदेखा किया जाता है और प्रारंभ नहीं किया जाता है।

सेवाएं अलग जेवीएम में शुरू की गई हैं।

spring.application.name=xxx-api 
server.port=0 
eureka.name=xxx.api 
# Only for reading properties from a central location 
context.initializer.classes=com.package.contextClass 

मैं भी यकीन है कि अतिरिक्त जानकारी के किस तरह मैं प्रश्न में लिख सकता है नहीं कर रहा हूँ:

थेर सेवाओं लगभग समान, बहुत छोटे application.properties फ़ाइलों की है। मैं अब कुछ घंटों के लिए लॉग के माध्यम से जा रहा हूं और कोई स्पष्ट अंतर नहीं देखता, बस यह स्पष्ट रूप से मेरी @Configuration कक्षा को अनदेखा करता है।

क्या किसी के पास इससे पहले कोई समस्या थी?

+0

इस कॉन्फ़िगरेशन क्लास को लोड करने के लिए कैसे माना जाता है? आपने अपना स्प्रिंग बूट बूटस्ट्रैप नहीं दिखाया। – chrylis

+0

क्षमा करें, इसे '@ SpringBootAplication' का उपयोग करके लोड किया जाना चाहिए, यानी '@ घटक स्कैन' और '@ EnableAutoConfiguration' का उपयोग करके लोड किया जाना चाहिए। – user991710

+2

दोनों स्थितियों में आपके स्प्रिंगबूट एप्लिकेशन क्लास के समान पैकेज में @ कॉन्फ़िगरेशन क्लास है? –

उत्तर

18

@SpringBootAplication एनोटेशन (या, अधिक सटीक रूप से अनुमानित @ कॉम्पोनेंटस्कैन एनोटेशन) डिफ़ॉल्ट रूप से केवल एनोटेटेड क्लास के आगे और नीचे क्लासपाथ स्कैन करता है।

तो, आपकी कॉन्फ़िगरेशन क्लास को आपके आवेदन के उप-पैकेज में या उसके बाद रखा जाना चाहिए।

+0

यह सही जवाब था। धन्यवाद! – user991710

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