আমার একটি উপাদান রয়েছে যা আমি @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: শ্রেণি পথের সংস্থান [জুনিট / ফ্রেমওয়ার্ক / টেস্টক্যাস.ক্লাস] খোলা যায় না কারণ এটি বিদ্যমান নেই
আমি 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 {}
তবে এটি আমার মতো স্ক্যান থেকে উপাদানটিকে বাদ দেবে বলে মনে হয় না।
আমি কীভাবে বাদ দেব?