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

沙海
沙海
沙海
735
文章
2
评论
2021年4月7日12:30:14
评论
2 1927字阅读6分25秒
摘要

速读摘要

速读摘要

在初始化Web应用程序中的任何过滤器或servlet之前,将通知所有servletContextListener上下文初始化。在同一应用程序上下文中,可以使用有序接口或@order注释对其进行排序。

原文约 531 | 图片 0 | 建议阅读 1 分钟 | 评价反馈

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

GitHub笔记

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

在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上下文初始化。 */@Overridepublic 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注释对其进行排序。 */@Overridepublic void run(ApplicationArguments args) throws Exception {    System.out.println("ApplicationRunner的run方法");}

4.实现CommandLineRunner接口

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

笔记版权归原作者所有,转载请注明出处 https://books.halfrost.com/leetcode/

继续阅读
weinxin
资源分享QQ群
本站是一个IT技术分享社区, 会经常分享资源和教程; 分享的时代, 请别再沉默!
沙海
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: