Quando um evento é publicado no ApplicationContext fornecido pela Spring e é detectado pelo ouvinte, o método de processamento correspondente será executado.
O evento em si <br /> é uma classe personalizada que precisa herdar ApplicationEvent fornecido pela primavera.
@Datapublic Classe MyEvent estende ApplicationEvent {private String msg; public myevent (fonte de objeto, string msg) {super (fonte); this.msg = msg; }} Escuta de eventos
O método básico é implementar a interface ApplicationListener , personalizar um ouvinte, implementar onApplicationEvent() e adicione -o ao ApplicationContext .
por exemplo:
public class MyListener implementa ApplicationListener <MyEvent> {@Override public void onApplicationEvent (Evento MyEvent) {System.out.print ("Evento de Speaking MyEvent"); }} ... // Adicione o ouvinte à classe de inicialização do Springboot public static void main (String [] args) {SpringApplication Application = new SpringApplication (myApplication.class); Application.AddListeners (new MyListener ()); Application.run (args); } Você também pode usar o anotação @ EventListener (recomendado): o princípio é criar um ouvinte digitalizando esta anotação e adicioná -lo ao ApplicationContext .
@Componente @slf4jpublic class myeventhandler {@eventListener public void handleEvent (evento myevent) { log.info ("-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Liberação do evento
Ele pode ser publicado através do método de publicação de objetos de contexto ConfigurableApplicationContext::publishEvent() .
Você também pode implementar a interface ApplicationEventPublisherAware para publicar (recomendado).
@Componente@slf4jpublic Class Events Service implementa ApplicationEventPublisheRaWare {public ApplicationEventPublisher Publisher; @Override public void setApplicationEventPublisher (ApplicationEventPublisher ApplicationEventPublisher) {this.publisher = ApplicationEventPublisher; } public string doeventwork (string msg) { log.info ("----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Publisher.publishevent (evento); Código de teste
@Springboottest @runwith (springrunner.class) classe pública eventServiceTest {@AUTOWIRED PRIVADO PRIVIDO Serviço; @Test public void EventTest () {String msg = "Java Code"; Service.DoEventwork (MSG); }} Perceber
Se houver uma relação de herança entre os dois eventos, o evento de subclasse será ouvido primeiro e, em seguida, a classe pai será ouvida após o processamento.
// myevent2 estende myevent@componente@slf4jpublic classe myeventhandler {@eventListener public void handleEvent (evento myevent) { Log.info ("---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Log.info (----------------------- Evento de processamento 2: {} ", event.getmsg ());Quando publico um evento de subclasse MyEvent2, o log é o seguinte:
O exposto acima é todo o conteúdo deste artigo. Espero que seja útil para o aprendizado de todos e espero que todos apoiem mais o wulin.com.