2021年3月8日星期一

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

作者: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上下文初始化。 */@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方法");}

5、实现CommandLineRunner接口

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

学习了,你知道几种?

近期热文推荐:

1.600+ 道 Java面试题及答案整理(2021最新版)

2.终于靠开源项目弄到 IntelliJ IDEA 激活码了,真香!

3.阿里 Mock 工具正式开源,干掉市面上所有 Mock 工具!

4.Spring Cloud 2020.0.0 正式发布,全新颠覆性版本!

5.《Java开发手册(嵩山版)》最新发布,速速下载!

觉得不错,别忘了随手点赞+转发哦!









原文转载:http://www.shaoqun.com/a/610611.html

跨境电商:https://www.ikjzd.com/

折扣网站:https://www.ikjzd.com/w/74

tiki:https://www.ikjzd.com/w/2053


作者:FOEVERYANG来源:https://www.cnblogs.com/lsgspace/p/10508180.html在springBoot中我们有时候需要让项目在启动时提前加载相应的数据或者执行某个方法,那么实现提前加载的方式有哪些呢?接下来我带领大家逐个解答1、实现ServletContextAware接口并重写其setServletContext方法@Componentpublic
空中云汇:https://www.ikjzd.com/w/2684
五洲会海购:https://www.ikjzd.com/w/1068
东杰智能:https://www.ikjzd.com/w/1967
关于亚马逊广告,多的是你不知道的事!:https://www.ikjzd.com/home/132404
口述:因为一句玩笑话我被上司糟蹋:http://lady.shaoqun.com/m/a/19739.html
卖家须知,亚马逊FBA仓库管理技巧:https://www.ikjzd.com/home/96898

没有评论:

发表评论