• Spring中的ApplicationContext事件机制


    ApplicationContext的事件机制是观察者设计模式的实现,通过ApplicationEvent类和ApplicationListerner接口来实现。

    1. 创建EmailEvent

    public class EmailEvent  extends ApplicationEvent{
    
        private String address;
        private String text;
        
        public EmailEvent(Object source) {
            super(source);
        }
        
        public EmailEvent(Object source, String address, String text) {
            super(source);
            this.address = address;
            this.text = text;
        }
    
        public String getAddress() {
            return address;
        }
    
        public void setAddress(String address) {
            this.address = address;
        }
    
        public String getText() {
            return text;
        }
    
        public void setText(String text) {
            this.text = text;
        }
    
    }

    2. 创建EmailNotifier类

    public class EmailNotifier implements ApplicationListener{
    
        @Override
        public void onApplicationEvent(ApplicationEvent event) {
            if (event instanceof EmailEvent) {
                EmailEvent emailEvent = (EmailEvent)event;
                System.out.println("邮件接收地址:" + emailEvent.getAddress());
                System.out.println("邮件正文: " + emailEvent.getText());
            }
            
        }
    
    }

    3. 创建容器配置文件  beans_mail.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
    
       <bean id="emailNotifier" class="com.tutorialspoint.EmailNotifier">
       </bean>
       
       
    </beans>

    4. 测试

    ApplicationContext context = new ClassPathXmlApplicationContext("beans_mail.xml");
    EmailEvent emailEvent = new EmailEvent("hello","spring@163.com","this is test");
    context.publishEvent(emailEvent);

    5. 输出结果

    六月 01, 2016 5:13:10 下午 org.springframework.context.support.AbstractApplicationContext prepareRefresh
    INFO: Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@9b6220: startup date [Wed Jun 01 17:13:10 CST 2016]; root of context hierarchy
    六月 01, 2016 5:13:10 下午 org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
    INFO: Loading XML bean definitions from class path resource [beans_mail.xml]
    邮件接收地址:spring@163.com
    邮件正文: this is test
  • 相关阅读:
    Linux自定义服务文件编写
    Ubuntu PPA方式安装vim
    ubuntu PPA使用指南
    ubuntu安装最新emacs
    Docker支持中文
    C#调用Go版DLL
    C#调用exe程序
    golang编写动态库供c#程序调用
    科学正在追赶中医,中医将变得时髦(转载)
    常见.NET功能代码汇总 (3)
  • 原文地址:https://www.cnblogs.com/linlf03/p/5550386.html
Copyright © 2020-2023  润新知