SpringBoot启动就立即加载其它类方法:实现ApplicationListener

在启动类加上如下代码

 public static void main(String[] args) {
        SpringApplication springApplication = new SpringApplication(Application.class);
        springApplication.addListeners(new ApplicationStartup());
        springApplication.run(args);
}

然后在跟SpringBoot启动类同样路径下新建ApplicationStartup类,实现ApplicationListener<ContextRefreshedEvent>

public class ApplicationStartup implements ApplicationListener<ContextRefreshedEvent> {

    @Override
    public void onApplicationEvent(ContextRefreshedEvent contextRefreshedEvent) {

        // HelloHandler是要启动的类,start是项目一启动就执行的方法,
        // 我这里的handler是用于开启多线程,实时接收MQ消息     
        
        HelloHandler handler = 
        contextRefreshedEvent.getApplicationContext().getBean(HelloHandler .class);
        handler.start();


    }
}

关于ApplicationListener<ContextRefreshedEvent>:

1、在IOC的容器的启动过程,当所有的bean都已经处理完成之后,spring ioc容器会有一个发布事件的动作。

2、从 AbstractApplicationContext 的源码中就可以看出:先有InitializingBean,后有ApplicationListener<ContextRefreshedEvent>。所以当ioc容器加载处理完相应的bean之后,我们可以自定义一些一启动就立即加载的bean。

3、实现方式:让我们的bean实现ApplicationListener接口,这样当发布事件时,[spring]的ioc容器就会以容器的实例对象作为事件源类,并从中找到事件的监听者,此时ApplicationListener接口实例中的onApplicationEvent(E event)方法就会被调用,我们的逻辑代码就会写在此处。这样我们的目的就达到了

这一段解释参考自:https://www.jianshu.com/p/4bd3f68cb179

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值