目 录CONTENT

文章目录

SpringBoot 初始化执行自定义代码

陌念
2021-03-26 / 0 评论 / 1 点赞 / 13 阅读 / 0 字
温馨提示:
本文最后更新于2024-06-07,若内容或图片失效,请留言反馈。 部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

需求:springboot 启动后自动执行某些代码,初始化数据,并将数据放到 servletContext 中。

首先,不可使用 ServletContextListener,即不能用 @WebListener ,因为 servlet 容器初始化后,spring 并未初始化完毕,不能使用 @Autowired 注入 spring 的对象。

方法一:

推荐使用 ApplicationListener:启动项目, spring 加载完毕后,才执行该 ApplicationListener,并且该 Listener 中可以使用 spring 的内容。

@Component
public class InitBlog implements ApplicationListener<ContextRefreshedEvent> {

    @Override
    public void onApplicationEvent(ContextRefreshedEvent contextRefreshedEvent) {
        //获取applicationContext
        ApplicationContext applicationContext = contextRefreshedEvent.getApplicationContext();
        //获取application
        ServletContext application = ((WebApplicationContext) contextRefreshedEvent.getApplicationContext()).getServletContext();
        assert application != null;

        ……
    }
}

方法二:未实践过

直接注入ServletContext,然后初始化启动的方法上加@PostConstruct

@Autowired
private ServletContext servletContext;


1
  1. 支付宝打赏

    qrcode alipay
  2. 微信打赏

    qrcode weixin
  3. QQ打赏

    qrcode qq

评论区