Размещение репозитория IMP в не базовую упаковку
-
22-10-2019 - |
Вопрос
Я не отделяю свою пользовательскую реализацию репозитория от пакета домена. И, вероятно, некоторые общие интерфейсы. Например, я хочу иметь структуру, подобную
com
domain
Foo
FooRepository
common
Bar
persistence
BarImpl
interface FooRepository extends Bar{}
<jpa:repositories base-package="com.domain" /> // smt else?
Как я должен это настроить?
Решение
Автоматический запас класса репозитория работает только в том случае, если вы размещаете его в тот же пакет и используете либо пост -режим по умолчанию, либо определите суффикс для использования вручную. Итак, в вашем сценарии вам придется поместить FooRepositoryImpl
в domain
упаковка. Вы можете настроить суффикс, используя repository-impl-postfix
атрибут. Если вы хотите поместить реализацию в другой пакет, вы можете объявить о пользовательской программе реализации вручную, используя fooRepositoryImpl
как идентификатор бобов. Затем класс может проживать в любом пакете, который вы хотите.
Я предполагаю, что Bar
это интерфейс, содержащий индивидуальные объявления метода. На самом деле мы рекомендуем поместить как пользовательский интерфейс репозитория, так и реализацию в тот же пакет и сделать его пакетом защищенным, чтобы он не был доступен для клиентов индивидуально. Таким образом, все клиенты, которые действительно видят, - это единый интерфейс репозитория, содержащий методы запросов и вручную реализованные.