Автоматический подбор класса репозитория работает только в том случае, если вы поместите его в тот же пакет и используете постфикс по умолчанию или определите суффикс для использования вручную. Таким образом, в вашем сценарии вы должны поместить FooRepositoryImpl
в пакет domain
. Вы можете настроить суффикс, используя атрибут repository-impl-postfix
. Если вы хотите поместить реализацию в другой пакет, вы можете объявить пользовательский компонент реализации вручную, используя fooRepositoryImpl
в качестве идентификатора компонента. Затем класс может находиться в любом пакете, который вы хотите.
Я предполагаю, что Bar
- это интерфейс, содержащий объявления пользовательских методов. На самом деле мы рекомендуем поместить как пользовательский интерфейс репозитория, так и реализацию в один и тот же пакет и сделать его защищенным, чтобы он не был доступен клиентам по отдельности. Таким образом, все клиенты фактически видят единый интерфейс репозитория, содержащий методы запросов и реализованные вручную.