eventI에는 여러 사용자가있는 CDI 이벤트 (한정자가없는 eventA)가 있습니다. 특수한 경우에는 특정 한정자 (예 : qualifierX)로 eventA를 실행해야합니다. 이제 eventA의 모든 소비자는 본질적으로 eventA (qualifierX가 있거나없는)를받습니다.특정 규정자를 사용하여 CDI 이벤트를 표시하지 않음
내 소비자가 qualifierX없이 eventA 만 관찰하는 행동을 유지하고 싶습니다.
P. 나는 모든 소비자를 수정할 수 없다.
eventA를 하위 eventB로 확장하고이 eventB를 시작하는 것에 대해 생각했지만 이벤트 A 관찰자도 트리거합니다.
CDI에서이를 직접 수행 할 수 있습니까?
소비자가 한정자없이 'EventA'만 관찰하게하려면 '@Observes @Default EventA'로 정의해야합니다. 당신이 말한대로, 그들은 이제'@ Any' 이벤트에 묶여 있습니다 - 따라서 그들은 페이로드 유형이 맞는 한 이벤트를 받게 될 것입니다. ** 확장 **에 대해서 - 작동하지 않을 경우,'EventB'는 여전히'EventA'의 타입을 가지므로, 원래의 관찰자에게 통보 할 것입니다. ** 그러나, 당신이'EventA' 클래스 **를 바꿀 수 있다면, 당신은 슈퍼 클래스 ('MyEvent')를 만들고'EventA extends MyEvent'를 가질 것입니다. 그런 다음 MyEvent를 사용하여 이벤트를 시작하면 원래 관찰자에게 알리지 않습니다. – Siliarus
또한'ProcessObserverMethod'를 찾고 한정자를 수정하는 CDI 확장을 작성할 수 있습니다. –
@Siliarus 나는이 해결책으로 갈 것이라고 생각한다. 감사합니다. –