写点什么

Spring Boot 启动时,让方法自动执行的 4 种方法!

用户头像
Java小咖秀
关注
发布于: 2021 年 04 月 15 日
Spring Boot 启动时,让方法自动执行的 4 种方法!

公众号:Java小咖秀,网站:javaxks.com


作者: FOEVERYANG ,来源: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上下文初始化。     */    @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方法");    }
复制代码


用户头像

Java小咖秀

关注

公众号:Java小咖秀,专注Java相关领域。 2020.06.18 加入

公众号【Java小咖秀】,回复“面试”白嫖一份博主Java面试题。 个人网站:https://www.javaxks.com。

评论

发布
暂无评论
Spring Boot 启动时,让方法自动执行的 4 种方法!