В настоящее время мы работаем над настройкой структуры, ориентированной на сервисный уровень, с менеджером постоянства в качестве нижнего уровня и сервисными классами наверху. Менеджеры постоянства будут выполнять все основные действия с объектами, такие как создание, обновление, поиск одного, поиск всех, фильтрация, сортировка и т. д. Сервисы будут содержать минимальную жизнеспособную бизнес-логику для объекта.
Теперь мы хотели бы реализовать правило, согласно которому менеджеры не должны обращаться к другим менеджерам, сервисы должны выполнять работу между менеджерами. Однако система типов Java с ее правилами видимости этого не предусматривает — private/protected действует глобально, а не только для других менеджеров, менеджеры должны быть видны другим сервисам.
Итак, мы думали об АОП, который, безусловно, включал бы ограничения доступа между классами, но мы хотели бы, чтобы правила учитывались во время компиляции, а не во время выполнения. Кажется - у меня не было возможности подробно изучить это - что AspectJ обеспечивает время компиляции AOP, но включает ли это ограничения доступа времени компиляции между классами, как описано выше?
Любой намек на это помог бы нам быстро решить, идти ли вообще по этому пути или нет.
Спасибо!