Java Web应用启动过程中执行代码的方法

XINAC 2022-04-1309:53:28来源:https://blog.xinac.cn
评论
4062 1356字
摘要

  应用启动前或启动后执行代码:SpringApplication,WebApplicationInitializer,ApplicationRunner,CommandLineRunner、ServletContextListener,web.xml

1、Springboot

@Slf4j
@Component
public class TestRunner implements ApplicationRunner {

    @Override
    public void run(ApplicationArguments args) throws Exception {
        log.info("[boot] 程序启动到最后会执行此代码,可以注入 Bean");
    }
}

或 2

@Slf4j
@Component
public class TestRunner implements CommandLineRunner {

    @Override
    public void run(String... args) throws Exception {
        log.info("[boot] 程序启动到最后会执行此代码,可以注入 Bean");
    }
}

或 3

// 写在 main 方法中 run() 的前后
public static void main(String[] args) {
    // do something
    SpringApplication.run(Application.class, args);
    // do something
}

2、Springmvc

// 此代码将在tomcat等容器初始化完成后,启动web应用时最先执行
public class TestInit implements WebApplicationInitializer {

    @Override
    public void onStartup(ServletContext servletContext) throws ServletException {
        // 此方法等同于web.xml配置文件,即xml文件的代码化实现
        // do something
    }
}

@Component
public class TestRunner {

    @PostConstruct
    public void runner() {
        // 此注解有很多的使用限制,不一定保证会执行,具体可查看API说明
    }
}

3、Struts Spring or other

// 此代码将在上下文初始化和销毁过程中执行,不在最前和最后,相对靠后
public class InstallListener implements ServletContextListener {

    @Override
    public void contextInitialized(ServletContextEvent sce) {
        // todo
    }

    @Override
    public void contextDestroyed(ServletContextEvent sce) {
        // todo
    }
}

上述代码还需配合配置项使用

<!-- web.xml -->
<listener>
	<listener-class>com.example.demo.InstallListener</listener-class>
</listener>

<!-- web.xml -->
<servlet>
	<servlet-name>ConnectorServlet</servlet-name>
	<servlet-class>net.fckeditor.connector.ConnectorServlet</servlet-class>
	<load-on-startup>1</load-on-startup>
</servlet>

weinxin
新逸IT技术
扫一扫关注微信公众号
XINAC
  • 版权声明 本文源自 https://blog.xinac.cn 整理 发表于 2022-04-1309:53:28
  • 转载请注明:https://www.xinac.net/9257.html
Java设计模式十三:模板模式 软件程序

Java设计模式十三:模板模式

模板(Template Method)模式:定义一个操作中的算法骨架,而将算法的一些步骤延迟到子类中,使得子类可以不改变该算法结构的情况下重定义该算法的某些特定步骤。
匿名

发表评论

匿名网友

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

确定