zoukankan      html  css  js  c++  java
  • ________________初学springboot10

    事件监听

    方法一:

    //新建事件监听器。 实现ApplicationListener接口

    import org.springframework.context.ApplicationListener;

    public class MyApplicationListener implements ApplicationListener<MyApplicationEvent> {

    @Override

    public void onApplicationEvent(MyApplicationEvent event) {

    System.out.println("监听事件!!!!!"+event.getClass());

    }

    }

    //新建事件类  继承ApplicationEvent 类

    public class MyApplicationEvent extends ApplicationEvent {

    /**

    * 定义事件

    */

    private static final long serialVersionUID = 1L;

    public MyApplicationEvent(Object source) {

    super(source);

    // TODO Auto-generated constructor stub

    }

    }

    //发布事件 

    @EnableAutoConfiguration

    @ComponentScan

    public class App {

    public static void main(String[] args) {

    SpringApplication app=new SpringApplication(App.class);

    app.addListeners(new MyApplicationListener());

    ConfigurableApplicationContext context = app.run(args);

    context.publishEvent(new MyApplicationEvent(new Object()));

    context.close();

    }

    }

    方法二,注解ApplicationLister配置到Spring容器中

    不需要以下方法

    //app.addListeners(new MyApplicationListener());

    方法三、Application.properties 中context.listener.classes=全类名

    方法四、给监听方法加@EventListener注解,所在的类要加入Spring容器

    @Component

    public class MyHandle {

    @EventListener

    public void event(MyApplicationEvent event) {//监听容器给定的事件,引用就好  ContextStopEvent

    System.out.println("监听事件!!!!!"+event.getClass());

    }

    }

    ApplicationContextInitializer 接口是在 容器refresh之前的回调

    1、写一个类实现此接口

    import org.springframework.context.ApplicationContextInitializer;
    import org.springframework.context.ConfigurableApplicationContext;

    public class MyInitializer implements ApplicationContextInitializer<ConfigurableApplicationContext> {

    @Override
    public void initialize(ConfigurableApplicationContext applicationContext) {
    System.out.println("bean count:"+applicationContext.getBeanDefinitionCount());
    }

    }

    2、注册 ApplicationContextInitializer  

    public class App {

    public static void main(String[] args) {

    SpringApplication app=new SpringApplication(App.class);

    //方法1️⃣app.addInitializers(new MyInitializer()); 

    ConfigurableApplicationContext context=app.run(args);

    context.close();

    }

    }

    //方法2️⃣ 在application.properties配置

    context.initializer.classes=com.lsq.test.MyInitializer

    //方法3️⃣其他项目引用 spring.factories、、spring.factory机制

    里面 ApplicationContextInitializer全类名=实现类全类名

    ComandLineRunner容器启动之后的最后一步回调

    可以拿到ApplicationArguments接口  启动选项中可以添加参数 ,--name=value

    如果有多个,可以使用@order(number)或者ordered 接口 来控制顺序,数字越小,顺序越靠前

  • 相关阅读:
    Linux启动报错missing operating system
    Linux tmp目录自动清理总结
    ORACLE口令管理
    oom_kill_process造成数据库挂起并出现found dead shared server
    Oracle shutdown immediate遭遇ORA-24324 ORA-24323 ORA-01089
    从flink-example分析flink组件(1)WordCount batch实战及源码分析
    从mysql高可用架构看高可用架构设计
    由mysql分区想到的分表分库的方案
    六边形效果
    迷你MVVM框架 avalonjs1.5.2 发布
  • 原文地址:https://www.cnblogs.com/qiqisx/p/9364509.html
Copyright © 2011-2022 走看看