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

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>

本站是镜像站点,主要探讨Java相关技术,所有文章都有在主站转载
本文永久链接:https://www.xinac.net/9257.html

Java  Spring 
更新时间:2022-04-13 10:07:02

本文由 新逸Cary 创作,如果您觉得本文不错,请随意赞赏
采用 知识共享署名4.0 国际许可协议进行许可
本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名
原文链接:https://blog.xinac.cn/archives/javaweb-startup-run.html
最后更新:2022-04-13 10:07:02

评论

Your browser is out of date!

Update your browser to view this website correctly. Update my browser now

×