@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:クラスパスリソース[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 {}
しかし、それは私が望むようにスキャンからコンポーネントを除外するようには見えません。
どうすれば除外できますか?