Когда событие будет размещено в ApplicationContext, предоставленном Spring, и обнаруживается слушателем, будет выполнен соответствующий метод обработки.
Само событие <Br /> Event - это пользовательский класс, который должен унаследовать ApplicationEvent предоставленное весной.
@Datapublic class myevent Extends ApplicationEvent {Private String MSG; public myevent (источник объекта, String msg) {super (source); this.msg = msg; }} Слушание событий
Основным методом является реализация интерфейса ApplicationListener , настройку прослушивателя, реализации метода onApplicationEvent() , а затем добавить его в ApplicationContext .
например:
открытый класс MyListener реализует ApplicationListener <Myevent> {@Override public void onApplicationEvent (myevent event) {System.out.print («Говоря о событии Myevent»); }} ... // Добавить слушатель в класс запуска в классе Springboot public static void main (string [] args) {SpringApplication Application = New SpringApplication (myApplication.class); Application.addlisteners (new MyListener ()); Application.run (args); } Вы также можете использовать Annotation @ EventListener (рекомендуется): принцип состоит в том, чтобы создать слушателя, сканируя эту аннотацию и добавить его в ApplicationContext .
@Component @slf4jpublic class myeventhandler {@eventlistener public void handleevent (myevent event) { log.info("---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Выпуск событий
Он может быть опубликован через метод публикации контекста ConfigurableApplicationContext::publishEvent() .
Вы также можете реализовать интерфейс ApplicationEventPublisherAware для публикации (рекомендуется).
@Component@slf4jpublic class eventservice реализует ApplicationEventPublisherAware {public ApplicationEventPublisher Publisher; @Override public void setApplicationEventPublisher (ApplicationEventPublisher ApplicationEventPublisher) {this.publisher = ApplicationEventPublisher; } public String doeventWork (String msg) { log.info("------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- msg); Publisher.publishevent (Event); Тестовый код
@Springboottest @runwith (springrunner.class) открытый класс EventserviceTest {@autowired Private Event Service; @Test public void EventTest () {String msg = "Java Code"; Service.doeventWork (MSG); }} Уведомление
Если между этими двумя событиями существует взаимосвязь наследования, сначала будет прослушано событие подкласса, а затем родительский класс будет прослушиваться после обработки.
// myevent2 расширяет myevent@component@slf4jpublic class myeventhandler {@eventlistener public void handleevent (myevent event) { log.info("----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Log.info ("---------------------Когда я публикую подклассное событие myevent2, журнал выглядит следующим образом:
Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.