springBoot 启动时如何让方法自动运行呢?
下文笔者讲述SpringBoot启动就让方法运行的几种方法分享,如下所示
实现ServletContextAware接口
将要执行的方法所在的类交个spring容器扫描(@Component)
SpringBoot启动时--就让程序运行的方法
方式1: 实现ServletContextAware接口并重写其setServletContext方法 方式2: 实现ServletContextlistener接口 方式3: 将要执行的方法所在的类交个spring容器扫描(@Component), 同时在要运行的方法上添加@PostConstruct注解或静态代码块执行 方式4: 实现ApplicationRunner接口
实现ServletContextAware接口
并重写其setServletContext方法
package com.java265.myclass; import org.springframework.stereotype.Component; import org.springframework.web.context.ServletContextAware; import javax.servlet.ServletContext; @Component public class TestStarted implements ServletContextAware { /** * 在填充普通bean属性之后但在初始化之前调用 * 类似于initializingbean的afterpropertiesset或自定义init方法的回调 * */ @Override public void setServletContext(ServletContext servletContext) { System.out.println("setServletContext方法"); } } 注意事项: 该方法会在填充完普通Bean的属性 但是还没有进行Bean的初始化之前执行
实现ServletContextListener接口
package com.java265.myclass; import org.springframework.stereotype.Component; import javax.servlet.ServletContext; import javax.servlet.ServletContextEvent; import javax.servlet.ServletContextListener; @Component public class MyServletContextListener implements ServletContextListener { /** * 在填充普通bean属性之后但在初始化之前调用 * 类似于initializingbean的afterpropertiesset或自定义init方法的回调 * */ @Override public void contextInitialized(ServletContextEvent sce) { //ServletContext servletContext = sce.getServletContext(); System.out.println("执行contextInitialized方法"); } }
将要执行的方法所在的类交个spring容器扫描(@Component)
同时在要运行的方法上添加@PostConstruct注解或者静态代码块执行
package com.java265.myclass; import org.springframework.stereotype.Component; import javax.annotation.PostConstruct; @Component public class Test2 { //静态代码块会在依赖注入后自动执行,并优先执行 static { System.out.println("---static--"); } /** * @Postcontruct’在依赖注入完成后自动调用 */ @PostConstruct public static void haha() { System.out.println("@Postcontruct’在依赖注入完成后自动调用"); } }
实现ApplicationRunner接口
package com.java265.myclass; import org.springframework.boot.ApplicationArguments; import org.springframework.boot.ApplicationRunner; import org.springframework.stereotype.Component; @Component public class MyApplicationRunner implements ApplicationRunner { @Override public void run(ApplicationArguments args) throws Exception { System.out.println("ApplicationRunner的run方法"); } }
启动Spring--将依次输出以下信息
执行contextInitialized方法 ---static-- @Postcontruct’在依赖注入完成后自动调用 setServletContext方法 ApplicationRunner的run方法
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。