凯发真人娱乐

springboot启动时让方法自动执行的方法 -凯发真人娱乐

2024-01-04

本篇内容介绍了“springboot让方法的方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

在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方法");
  }

5.实现commandlinerunner接口

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

“springboot启动时让方法自动执行的方法”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注本站网站,小编将为大家输出更多高质量的实用文章!

网站地图