奇妙な問題に遭遇しました。トップレベルのパッケージがスキャン用に指定されている場合、コンポーネントスキャンがサブパッケージを再帰的にスキャンしているように見えます。
私のリポジトリとエンティティは、プロジェクトの依存関係です。それらはパッケージ名com.foo.bar.xyzの下にあり、私のアプリケーション構成はパッケージcom.foo.barの下にあります。 _@EnableJpaRepositories
_とともに@ComponentScan(basePackages = "com.foo.bar")
を記述すると、リポジトリBeanが見つからないというエラーが発生します。
ただし、上記のコンポーネントスキャンとともに@EnableJpaRepositories(basePackages = com.foo.bar.xyz)
のようなトップレベルのリポジトリパッケージを指定すると、リポジトリが正常に検出されます。
これは、リポジトリとエンティティがMavenの依存関係として挿入されているためにのみ発生していますか?では、コンポーネントの再帰的な部分は、サブパッケージまたはサブディレクトリをスキャンしますか?
これは、リポジトリとエンティティがMavenの依存関係として挿入されているためにのみ発生していますか?
では、コンポーネントの再帰的な部分は、サブパッケージまたはサブディレクトリをスキャンしますか?
ここで詳しく説明すると、@ComponentScan
は、@Component
または@Controller
のようなサブタイプを持つすべてのクラスを検索することを目的としていますが、PersistenceContextクラスに@EnableJpaRepositories
アノテーションを付けてSpring Data JPAを有効にするSpring Data JPAがリポジトリー・インターフェースの実装を作成するときにスキャンされる基本パッケージを構成します。したがって、@ComponentScan
と@EnableJpaRepositories
の両方の基本パッケージ情報を宣言する必要があります。