(For more resources related to this topic, see here.)
The payload of an event, the event object, carries any necessary state from the producer to the consumer and is nothing but an instance of a Java class.
An event object may not contain a type variable, such as <T>.
We can assign qualifiers to an event and thus distinguish an event from other events of an event object type. These qualifiers act like selectors, narrowing the set of events that will be observed for an event object type.
There is no distinction between a qualifier of a bean type and that of an event, as they are both defined with @Qualifier. This commonality provides a distinct advantage when using qualifiers to distinguish between bean types, as those same qualifiers can be used to distinguish between events where those bean types are the event objects.
An event qualifier is shown here:
@Qualifier @Target( { FIELD, PARAMETER } ) @Retention( RUNTIME ) public @interface Removed {}
An event is consumed by an observer method , and we inform Weld that our method is used to observe an event by annotating a parameter of the method, the event parameter , with @Observes . The type of event parameter is the event type we want to observe, and we may specify qualifiers on the event parameter to narrow what events we want to observe.
We may have an observer method for all events produced about a Book event type, as follows:
public void onBookEvent(@Observes Book book) { ... }
Or we may choose to only observe when a Book is removed, as follows:
public void onBookRemoval(@Observes @Removed Book book) { ... }
Any additional parameters on an observer method are treated as injection points.
An observer method will receive an event to consume if:
I remember deciding to pursue my first IT certification, the CompTIA A+. I had signed…
Key takeaways The transformer architecture has proved to be revolutionary in outperforming the classical RNN…
Once we learn how to deploy an Ubuntu server, how to manage users, and how…
Key-takeaways: Clean code isn’t just a nice thing to have or a luxury in software projects; it's a necessity. If we…
While developing a web application, or setting dynamic pages and meta tags we need to deal with…
Software architecture is one of the most discussed topics in the software industry today, and…