code: public void fireEvent(Object publisher, FireAfterTransaction events) throws RuntimeException {
          try {
              for (int i = 0; i < events.events().length; i++) {
                  Class<? extends EventObject> event = events.events()[i];
                  if (ApplicationEvent.class.isAssignableFrom(event)) {
                      ctx.publishEvent((ApplicationEvent) event.getConstructor(Object.class).newInstance(publisher));
                  }
              }
          } catch (Exception e) {
              throw new RuntimeException(e);
          }
      }
docs: Only {@link ApplicationEvent}s are created and published over Springs
  {@link ApplicationContext}.
  
  @param publisher The instance that is publishing the event
  @param events A list of event classes to fire
  @throws RuntimeException Any exception is re-thrown