• ________________初学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 接口 来控制顺序,数字越小,顺序越靠前

  • 相关阅读:
    【Web技术】(一)IIS Web服务器的安装与配置
    《数据结构课程设计》图结构练习:List Component
    ExcelUtils 导表实例
    SSH整合常见错误
    mysql索引优化
    数据库三范式
    sql联接那点儿事儿
    面试java简答题
    集合类框架
    数据库连接类oracleHelper
  • 原文地址:https://www.cnblogs.com/qiqisx/p/9364509.html
Copyright © 2020-2023  润新知