ฉันมีองค์ประกอบที่ฉันต้องการแยกออกจาก@ComponentScan
รายการเฉพาะ@Configuration
:
@Component("foo") class Foo {
...
}
มิฉะนั้นดูเหมือนว่าจะปะทะกับคลาสอื่น ๆ ในโครงการของฉัน ฉันไม่เข้าใจการชนกันอย่างถ่องแท้ แต่ถ้าฉันแสดงความคิดเห็นใน@Component
คำอธิบายประกอบสิ่งต่างๆจะเป็นไปอย่างที่ฉันต้องการ แต่โปรเจ็กต์อื่น ๆ ที่ต้องอาศัยไลบรารีนี้คาดว่าคลาสนี้จะจัดการโดย Spring ดังนั้นฉันจึงขอข้ามไปเฉพาะในโปรเจ็กต์ของฉัน
ฉันลองใช้@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: class path resource [junit / framework / 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 {}
แต่ดูเหมือนจะไม่รวมส่วนประกอบออกจากการสแกนอย่างที่ฉันต้องการ
ฉันจะยกเว้นได้อย่างไร