zoukankan      html  css  js  c++  java
  • Spring容器事件、自定义事件

    Spring容器内置事件,如容器的启动、停止、关闭、销毁等事件

    <bean name="contextStartedHandler" class="com.nuts.demo.spring.ContextStartedHandler">
        </bean>
        <bean name="contextStopedHandler" class="com.nuts.demo.spring.ContextStopedHandler"/>
    public class ContextStartedHandler implements ApplicationListener<ContextStartedEvent> {
    
        @Override
        public void onApplicationEvent(ContextStartedEvent contextStartedEvent) {
            System.out.println("Spring容器启动完成");
        }
    }
    public static void main(String[] args) {
            AbstractApplicationContext context = new ClassPathXmlApplicationContext("bean.xml");
            context.start();//启动容器
            context.stop();//停止容器
        }

    也可以自定义事件:

    1、通过扩展 ApplicationEvent,创建一个事件类 CustomEvent。这个类必须定义一个默认的构造函数,它应该从 ApplicationEvent 类中继承的构造函数。一旦定义事件类,你可以从任何类中发布它

    public class CustomEvent extends ApplicationEvent {
        public CustomEvent(Object source) {
            super(source);
        }
        public String toString(){
            return "自定义事件";
        }
    }

    2、自定义事件处理器,实现ApplicationListener接口,关注自定义的CustomEvent事件

    /**
     * 自定义事件处理器
     */
    public class CustomEventHandler implements ApplicationListener<CustomEvent> {
        @Override
        public void onApplicationEvent(CustomEvent customEvent) {
            System.out.println("事件被处理了:"+customEvent.toString());
        }
    }

    3、定义事件处理器

    /**
     * 事件发布器
     */
    public class MyEventPublisher implements ApplicationEventPublisherAware {
    
        ApplicationEventPublisher applicationEventPublisher;
        @Override
        public void setApplicationEventPublisher(ApplicationEventPublisher applicationEventPublisher) {
            this.applicationEventPublisher = applicationEventPublisher;
        }
        public void publish(){
            CustomEvent customEvent = new CustomEvent("事件相关的数据");
            applicationEventPublisher.publishEvent(customEvent);
        }
    }

    4、发布事件

    public class SpringMain {
    
        public static void main(String[] args) {
            AbstractApplicationContext context = new ClassPathXmlApplicationContext("bean.xml");
            MyEventPublisher publisher = context.getBean(MyEventPublisher.class);//构造发布器
            publisher.publish();//发布事件
        }
    }

    5、配置发布器、事件处理器

        <bean name="myEventPublisher" class="com.nuts.demo.spring.MyEventPublisher">
        </bean>
        <bean name="customEventHandler" class="com.nuts.demo.spring.CustomEventHandler"/>
  • 相关阅读:
    easyui combobox 实现联动
    smartWizard 和 uploadify 插件
    easyui panel href 引用页面导致的命名冲突问题
    Installshield 多语言安装包 和 安装序列号验证,及如何解决 Failed to set code page for Language 46 问题
    easyui 之tab和portal 在IE9下使用iframe时报未定义错误的解决方法
    easyui datagrid 动态列和前端分页,以及加载Datatable
    easyui 动态创建模式对话框
    移动硬盘一个分区“数据循环冗余错误”要求格式化解决方法
    easyui 开发中的通用类库
    easyui datagrid 工具栏实现方式
  • 原文地址:https://www.cnblogs.com/aligege/p/10655569.html
Copyright © 2011-2022 走看看