[解決済み] ComponentScan から @Component を除外する。
2023-01-01 21:49:22
質問
コンポーネントがあり、それを
@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.CUSTOM, value=ExcludeFooFilter.class)})
public class MySpringConfiguration {}
しかし、これでは私が望むように、コンポーネントをスキャンから除外することはできないようです。
どうすれば除外できるのでしょうか?
どのように解決するのですか?
設定は問題ないようです。
excludeFilters
の代わりに
excludes
:
@Configuration @EnableSpringConfigured
@ComponentScan(basePackages = {"com.example"}, excludeFilters={
@ComponentScan.Filter(type=FilterType.ASSIGNABLE_TYPE, value=Foo.class)})
public class MySpringConfiguration {}
関連
-
mvn' は、内部または外部のコマンド、操作可能なプログラムまたはバッチファイルとして認識されません。
-
Solve モジュールのビルドに失敗しました。Error: ENOENT: no such file or directory エラー
-
無効なメソッド宣言
-
Junitのユニットテストはjava.lang.Testを報告します。
-
Javaがエラーで実行される、選択が起動できない、最近起動したものがない
-
git pull appears現在のブランチに対するトラッキング情報がありません。
-
ApiModel と @ApiModelProperty の使用法
-
[解決済み] 配列からArrayListを作成する
-
[解決済み] Java で、あるコンストラクタを別のコンストラクタから呼び出すにはどうすればよいですか?
-
[解決済み] Javaで文字列値からenum値を取得する方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Eclipse問題 アクセス制限。タイプ 'SunJCE' が API でないことを解決し、/jdk ディレクトリにある /jre と jre の違いについて理解を深める。
-
NullPointerException - java.lang.
-
Eclipse の問題 アクセス制限。タイプ 'jfxrt' はAPI解決されていません。
-
Springの設定でxsdファイルのバージョン番号を設定しない方が良い理由
-
メモ帳でJavaプログラムをコンパイルして実行すると、Could not find or load main class ...というエラーが表示される。解決方法
-
が 'X-Frame-Options' を 'sameorigin' に設定したため、フレーム内に存在する。
-
強制型変換について
-
org.xml.sax.SAXParseExceptionのエラー解決方法
-
IDEAError:javaの依存性エラー。Annotation processing is not supported for module cycles...(アノテーション処理はモジュールサイクルではサポートされていません。
-
CAS 5.1.8でhttpをサポートし、認証されていない認可サービスエラーのプロンプトが表示される問題を解決した。