मेरे पास एक घटक है जिसे मैं @ComponentScan
एक विशेष में से बाहर करना चाहता हूं @Configuration
:
@Component("foo") class Foo {
...
}
अन्यथा, यह मेरी परियोजना में किसी अन्य वर्ग के साथ टकराव लगता है। मैं पूरी तरह से टकराव को नहीं समझता, लेकिन अगर मैं @Component
एनोटेशन पर टिप्पणी करता हूं , तो चीजें काम करती हैं जैसे मैं उन्हें चाहता हूं। लेकिन अन्य परियोजनाएं जो इस पुस्तकालय पर भरोसा करती हैं, उम्मीद करती हैं कि यह वर्ग स्प्रिंग द्वारा प्रबंधित किया जाएगा, इसलिए मैं इसे केवल अपनी परियोजना में छोड़ना चाहता हूं।
मैंने प्रयोग करने की कोशिश की @ComponentScan.Filter
:
@Configuration
@EnableSpringConfigured
@ComponentScan(basePackages = {"com.example"}, excludeFilters={
@ComponentScan.Filter(type=FilterType.ASSIGNABLE_TYPE, value=Foo.class)})
public class MySpringConfiguration {}
लेकिन यह काम नहीं करता है। यदि मैं उपयोग करने की कोशिश करता हूं FilterType.ASSIGNABLE_TYPE
, तो मुझे कुछ अजीब यादृच्छिक वर्ग को लोड करने में असमर्थ होने के बारे में एक अजीब त्रुटि मिलती है:
इसके कारण: java.io.FileNotFoundException: क्लास पाथ रिसोर्स [junit / फ्रेमवर्क / TestCase.class] को खोला नहीं जा सकता क्योंकि यह मौजूद नहीं है
मैंने type=FilterType.CUSTOM
निम्नलिखित के रूप में भी प्रयोग करने की कोशिश की :
class ExcludeFooFilter implements TypeFilter {
@Override
public boolean match(MetadataReader metadataReader,
MetadataReaderFactory metadataReaderFactory) throws IOException {
return metadataReader.getClass() == Foo.class;
}
}
@Configuration @EnableSpringConfigured
@ComponentScan(basePackages = {"com.example"}, excludeFilters={
@ComponentScan.Filter(type=FilterType.ASSIGNABLE_TYPE, value=Foo.class)})
public class MySpringConfiguration {}
लेकिन मुझे लगता है कि जैसे स्कैन से घटक को बाहर नहीं लगता है।
मैं इसे कैसे बाहर करूं?