Как Jee6 делает связь между наблюдателем и наблюдателем (шаблон наблюдателя)

StackOverflow https://stackoverflow.com/questions/3607295

Вопрос

Я прочитал несколько статей в блоге о реализации шаблона наблюдателя на Jee6 и что-то беспокоит меня ... Я не могу найти никакой информационной атм, поэтому я прошу там ...

Я нашел следующие примеры:

@Stateless
[...]
public class ParisJugService {

   @Inject
   Event event;

   public void helloParis(){
        System.out.println("Hello Paris");
        event.fire("hello Paris invoked!");
   }
}

@Stateless
public class EventReceiver {

    public void onHelloParis(@Observes String message){
        System.out.println("----------- " + message);
    }
}

А также

public class MyEvent {
    String data;
    Date eventTime;
    ....

}

public class EventProducer {

  @Inject @Any Event<MyEvent> event;


  public void doSomething() {
       MyEvent e=new MyEvent();
      e.data="This is a test event";
      e.eventTime=new Date();
      event.fire(e);

  }

}


public class EventConsumer {


    public void afterMyEvent(@Observes MyEvent event) {

        // .. Insert event logic here
    }

}

Я не могу понять, как проводится связь между потребителем событий и производителем событий ...

Это под названием «Конвенция о методах»? (Где слова «на», «после», «раньше» ... будут иметь смысл)

Это путем сравнения заданных аргументов (здесь строка и моюэээээээммент)?

Я не могу знать и не вижу, что еще это было ...

Это было полезно?

Решение

Ссылка между стрельбой события и слушателем основана на типе события.

В вашем примере:

public class EventConsumer {

    public void afterMyEvent(@Observes MyEvent event) {
        // .. Insert event logic here
    }

}

Этот класс получит все выпущенные события типа MyEvent, где бы они ни пришли.

Источник: http://download-llnw.orcle.com/javaee/6/api/javax/enterprise/event/observes.html.

Другие советы

Контейнер сохраняет метаданные обо всех бобах внутри него. На Startup это регистрирует все методы наблюдателя вместе с тип события (то Class аргумента) они наблюдают. Всякий раз, когда событие уволено, список наблюдателей проверяется на методы, которые принимают соответствующий тип события.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top