专栏首页程序员的成长之路SpringBoot启动时让方法自动执行的几种实现方式

SpringBoot启动时让方法自动执行的几种实现方式

来自:https://www.cnblogs.com/lsgspace/p/10508180.html

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

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

@Component
public 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注解或者静态代码块执行

@Component
public 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方法");
    }

<END>

本文分享自微信公众号 - 程序员的成长之路(cxydczzl),作者:戳一戳→

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2021-02-27

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • springBoot启动时让方法自动执行

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

    chenchenchen
  • Java项目启动时执行指定方法的几种方式

    上方就是@PostConstruct注解的使用方法了,同时也表示了此类被加载时的执行顺序。

    Java学习录
  • 让DOSBox启动后自动执行命令的方法讲解

    使用DOSBox,可以在win下模拟DOS,自些好玩的工作。例如,学习8086汇编。

    砸漏
  • Spring 中实现自动注入的几种方式

    Spring 中最常用的一个注解,当一个组件需要另一个组件作为属性的时候,我们可以通过两种方式对属性进行赋值,一种是通过构造方法,一种是通过 set 方法(类比...

    wsuo
  • centos6配置开机自启动执行脚本的两种方法

    醉生萌死
  • Pytest失败自动重跑的几种实现方法

    pytest-repeat这个插件,可以帮助我们很好的解决自动化测试过程中的一些偶线性bug,但前提是,当前自动化脚本是独立的,不依赖任何其他脚本。

    软件测试君
  • Android开发之设置开机自动启动的几种方法

    android:name=”.AutoStartReceiver”为处理开机启动后所做操作的AutoStartReceiver.java

    砸漏
  • 在ASP.NET应用启动的时候初始化的几种方法

    ASP.NET 4.0 之前,有两种方法:通过Global.asax 中的 Application_Start 事件启动,或者通过定义在 App_Code 文件...

    张善友
  • 实现网页自动跳到其他页面的几种方法

    某些时候我们需要实现网页的自动跳转,比如404错误页可以加入代码让它自动跳转到首页,下面介绍三种html页面自动跳转的方法。

    德顺

扫码关注云+社区

领取腾讯云代金券