Heim > Java > javaLernprogramm > Frühlingsanmerkungsereignis Ereignis

Frühlingsanmerkungsereignis Ereignis

高洛峰
Freigeben: 2016-11-22 15:37:02
Original
1564 Leute haben es durchsucht

Grundlegende Unterstützung

Werfen wir zunächst einen Blick darauf, welche Standardereignisse unterstützt werden

Frühlingsanmerkungsereignis Ereignis

Programm 1 (Service)

Erster Blick im Programm

ApplicationEventPublisher ist eine Federsache und muss zum Senden injiziert werden. Da ApplicationEventPublisherAware implementiert ist, ruft die setApplicationEventPublisher-Methode es automatisch für uns auf und ruft den Broadcast-Absender ab

/**
 * @author Carl
 * @date 2016/8/28
 * @modify 版权所有.(c)2008-2016.广州市森锐电子科技有限公司
 */public class EmailService implements ApplicationEventPublisherAware {    private List<String> blackList;    private ApplicationEventPublisher publisher;    public void setBlackList(List<String> blackList) {        this.blackList = blackList;
    }    public void setApplicationEventPublisher(ApplicationEventPublisher publisher) {        this.publisher = publisher;
    }    /**
     * 具体广播类
     * @param address
     * @param text
     */
    public void sendEmail(String address, String text) {        if (blackList.contains(address)) {
            BlackListEvent event = new BlackListEvent(this, address, text);
            publisher.publishEvent(event);            return;
        }        // send email...
    }
}
Nach dem Login kopieren

Programm 2 (Ereignis)

Hier müssen Sie auch ApplicationEvent erben und einige Ihrer eigenen erforderlichen Parameter usw. implementieren, damit Sie diese erhalten, wenn Sie die Übertragung erhalten. Natürlich ist dies möglich Verwenden Sie auch die Quelle

/**
 * @author Carl
 * @date 2016/8/28
 * @modify 版权所有.(c)2008-2016.广州市森锐电子科技有限公司
 */public class BlackListEvent extends ApplicationEvent {  
  private String address;    
private String test;    
public BlackListEvent(Object source, String address, String test) {    
    super(source);        this.address = address;        this.test = test;
    }    public String getAddress() {        return address;
    }    public void setAddress(String address) {        this.address = address;
    }    public String getTest() {        return test;
    }    public void setTest(String test) {        this.test = test;
    }
}
Nach dem Login kopieren

Programm 3 (Empfänger)

Sie müssen bei Verwendung von Spring weiterhin dessen Spezifikationen befolgen. Dann muss der Empfänger die ApplicationListener-Schnittstelle implementieren, also alle Objekte, die Wenn Sie die generische Übertragung erhalten, wird die onApplicationEvent-Schnittstelle weitergeleitet

Natürlich ist Spring sehr nachdenklich und implementiert nicht unbedingt die ApplicationListener-Klasse. Fügen Sie die Annotation @EventListener

/**
 * @author Carl
 * @date 2016/8/28
 * @modify 版权所有.(c)2008-2016.广州市森锐电子科技有限公司
 */public class BlackListNotifier implements ApplicationListener<BlackListEvent> {  
  private String notificationAddress;    
  public void setNotificationAddress(String notificationAddress) {    
      this.notificationAddress = notificationAddress;
    }    @EventListener
    public void onApplicationEvent(BlackListEvent event) {        // notify appropriate parties via notificationAddress...
        System.out.println("onApplicationEvent, some thing I receive:" + event.getAddress() + ",text:" + event.getTest());
    }    @EventListener(condition = "#event.test == &#39;foo&#39;")    public void onApplicationCustomerEvent(BlackListEvent event) {
        System.out.println("onApplicationCustomerEvent,some thing I receive:" + event.getAddress() + ",text:" + event.getTest());      
        // notify appropriate parties via notificationAddress...
    }    @EventListener({ContextStartedEvent.class, ContextRefreshedEvent.class})    public void handleContextStart() {
        System.out.println("-------------handleContextStart");

    }    /**
     * 参数可以给BlackListEvent 可以不给
     */
    @EventListener(classes = {BlackListEvent.class})    public void handleBlackListEvent() {
        System.out.println("-------------handleBlackListEvent");
    }
}
Nach dem Login kopieren

@EventListener

< hinzu 🎜> zur Bean-Klasse. Genau wie das obige Programm kann sie auch über die Annotation @EventListener implementiert werden , die nur ausgeführt werden, wenn die Bedingungen erfüllt sind

Klassen, wenn das Ereignisobjekt ausgelöst wird, wird diese Klasse ausgeführt

Programm 4 (Config Bean)

Hier hauptsächlich Registriert einige Dienste und akzeptiert Broadcast-Beans, um

/**
 * 配置
 * @author Carl
 * @date 2016/8/28
 * @modify 版权所有.(c)2008-2016.广州市森锐电子科技有限公司
 */@Configurationpublic class AppConfig {    @Bean
    public EmailService emailService() {
        EmailService s = new EmailService();
        List<String> emails = new ArrayList<>(3);
        emails.add("known.spammer@example.org");
        emails.add("known.hacker@example.org");
        emails.add("john.doe@example.org");
        s.setBlackList(emails);        return s;
    }    @Bean
    public BlackListNotifier notifier() {
        BlackListNotifier notifier = new BlackListNotifier();
        notifier.setNotificationAddress("blacklist@example.org");        return notifier;
    }
}
Nach dem Login kopieren
zu akzeptieren
Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage