Try something like this:
public class Foo implements InitializingBean, DisposableBean {
private final EventPublisher eventPublisher;
public Foo(EventPublisher eventPublisher) {
this.eventPublisher = eventPublisher;
}
/** Called when the plugin has been enabled */
@Override
public void afterPropertiesSet() {
eventPublisher.register(this);
}
/** Called when the plugin is being disabled or removed */
@Override
public void destroy() throws Exception {
eventPublisher.unregister(this);
}
@EventListener
public void onBlah(BlahEvent event) {
...
}
}
…and don’t forget to register the class as a component in your atlassian-plugin.xml
file:
<component key="myFoo" class="com.example.Foo" />
… oh, and also import the EventPublisher
component:
<component-import key="eventPublisher"
interface="com.atlassian.event.api.EventPublisher" />