博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
springBoot启动时让方法自动执行的几种实现方式
阅读量:5942 次
发布时间:2019-06-19

本文共 1880 字,大约阅读时间需要 6 分钟。

一.开篇名义

在springBoot中我们有时候需要让项目在启动时提前加载相应的数据或者执行某个方法,那么实现提前加载的方式有哪些呢?接下来我带领大家逐个解答

1.实现ServletContextAware接口并重写其setServletContext方法

@Componentpublic class TestStarted implements ServletContextAware {    /**     * 在填充普通bean属性之后但在初始化之前调用     * 类似于initializingbean的afterpropertiesset或自定义init方法的回调     *     */    @Override    public void setServletContext(ServletContext servletContext) {        System.out.println("setServletContext方法");    }}

注意:该方法会在填充完普通Bean的属性,但是还没有进行Bean的初始化之前执行 

2.实现ServletContextListener接口

/**     * 在初始化Web应用程序中的任何过滤器或servlet之前,将通知所有servletContextListener上下文初始化。     */    @Override    public void contextInitialized(ServletContextEvent sce) {        //ServletContext servletContext = sce.getServletContext();        System.out.println("执行contextInitialized方法");    }

3.将要执行的方法所在的类交个spring容器扫描(@Component),并且在要执行的方法上添加@PostConstruct注解或者静态代码块执行

@Componentpublic class Test2 {    //静态代码块会在依赖注入后自动执行,并优先执行    static{        System.out.println("---static--");    }    /**     *  @Postcontruct’在依赖注入完成后自动调用     */    @PostConstruct    public static void haha(){        System.out.println("@Postcontruct’在依赖注入完成后自动调用");    }}

 

4.实现ApplicationRunner接口

/**     * 用于指示bean包含在SpringApplication中时应运行的接口。可以定义多个applicationrunner bean     * 在同一应用程序上下文中,可以使用有序接口或@order注释对其进行排序。     */    @Override    public void run(ApplicationArguments args) throws Exception {        System.out.println("ApplicationRunner的run方法");    }

4.实现CommandLineRunner接口

/**     * 用于指示bean包含在SpringApplication中时应运行的接口。可以在同一应用程序上下文中定义多个commandlinerunner bean,并且可以使用有序接口或@order注释对其进行排序。     * 如果需要访问applicationArguments而不是原始字符串数组,请考虑使用applicationrunner。     *      */    @Override    public void run(String... ) throws Exception {        System.out.println("CommandLineRunner的run方法");    }

二 .提高篇 

  未完待续------------后续将介绍各种启动调用方式的作用,有需要可以收藏本文,每周持续更新

转载于:https://www.cnblogs.com/lsgspace/p/10508180.html

你可能感兴趣的文章
struts2入门(搭建环境、配置、示例)
查看>>
Caused by: org.apache.ibatis.reflection.ReflectionException我碰到的情况,原因不唯一
查看>>
linux top命令查看内存及多核CPU的使用讲述【转】
查看>>
Linux下golang开发环境搭建
查看>>
jQuery操作input
查看>>
layer弹出信息框API
查看>>
delete from inner join
查看>>
WPF自学入门(十一)WPF MVVM模式Command命令 WPF自学入门(十)WPF MVVM简单介绍...
查看>>
git merge 和 git merge --no-ff
查看>>
独立软件开发商进军SaaS注意八个问题,互联网营销
查看>>
jdk内存的分配
查看>>
关于self.用法的一些总结
查看>>
UIView翻译 (参考)
查看>>
Android Display buffer_handle_t的定义
查看>>
SSH详解
查看>>
ASM概述
查看>>
【290】Python 函数
查看>>
godaddy域名转发(域名跳转)设置教程
查看>>
silverlight学习布局之:布局stackpanel
查看>>
理解并自定义HttpHandler
查看>>