Я хочу использовать шаблон Decorator CDI для расширения бизнес-логики, предоставляемой сервисом. Служба, которую я пытаюсь оформить, находится в другом модуле (в терминах maven), то есть в другом JAR. Например, предоставляемый сервис находится в модуле com.acme.provider
, а декоратор - в com.acme.consumer
рядом с потребителем сервиса.
Мой сервис вводится как есть, без оформления.
Декоратор объявлен в beans.xml
внутри потребительского модуля.
Я приведу рабочий пример здесь . После mvn install
тестовые распечатки "Hello", а не "Hello World", как если бы был применен декоратор.
Если я перенесу декоратор (и его объявление xml) в модуль провайдеров (см. Ветку decorator-in-provider
того же репозитория), все будет работать нормально, и будет напечатан «Hello World».
Если декораторы работают только тогда, когда код как компонента поставщика, так и самого декоратора находится в одном и том же модуле, я вижу, что он мало используется. Есть ли такое ограничение для шаблона декоратора Java EE? Или я что-то не так делаю?
Спасибо за понимание.