Можно ли, например, с помощью аннотаций создать некую «иерархию» владения классом?
В качестве примера предположим, что в этой «иерархии» есть три уровня объектов, Level1
, Level2
и Level3
.
Level1
могут иметь (в моем случае, как переменная экземпляра Spring @Autowire
) экземпляр Level2
, но не могут владеть Level3
(потому что это два уровня глубины).Кроме того, только Level1
классы могут владеть Level2
.Точно так же Level3
может принадлежать только Level2
.
Мне очень любопытно посмотреть, можно ли использовать некоторую комбинацию аннотаций и аргументов времени компиляции для достижения результата.
Примечание. Я ищу ответы, которые конкретно соответствуют тому, что я описал.Но конкретный вариант использования (если это помогает) - предотвращение прямого вызова бизнес-логикой высокого уровня бизнес-логики или, например, контроллеры API, вызывающие сервисы низкого уровня напрямую, когда они предназначены для вызова только бизнес-логики высокого уровня.
По сути, этот вопрос касается обобщения управления доступом (private, protected...
) на произвольные структуры пакетов, например, с помощью аннотаций.