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方法
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。


