Размещение репозитория impl в не базовом пакете - PullRequest
1 голос
/ 04 сентября 2011

Я не хочу отделять реализацию своего собственного репозитория от пакета домена. И, возможно, некоторые общие интерфейсы. Например, я хочу иметь структуру вроде

  com
       domain
            Foo
            FooRepository
       common
            Bar
       persistence
            BarImpl

interface FooRepository extends Bar{}

<jpa:repositories base-package="com.domain" /> // smt else?

Как мне настроить это?

1 Ответ

3 голосов
/ 05 сентября 2011

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

Я предполагаю, что Bar - это интерфейс, содержащий объявления пользовательских методов. На самом деле мы рекомендуем поместить как пользовательский интерфейс репозитория, так и реализацию в один и тот же пакет и сделать его защищенным, чтобы он не был доступен клиентам по отдельности. Таким образом, все клиенты фактически видят единый интерфейс репозитория, содержащий методы запросов и реализованные вручную.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...