WAR文件的主要方法是什么?

use*_*730 5 java spring tomcat

最近,我重新打包了我的java spring应用程序,成为一个用于在tomcat中部署的WAR文件.经过一些测试我注意到,这public static void main(String[] args)没有被执行.我的应用程序的一些必要的初始化完成main.是否有像mainWAR文件中的方法?在WAR文件中运行某些初始化的适当位置是什么?

brs*_*o05 10

您可以为web.xml文件添加一个监听器:

<listener>
    <description>Application startup and shutdown events</description>
    <display-name>Test</display-name>
    <listener-class>com.package.package.StartClass</listener-class>
</listener>

public class StartClass implements ServletContextListener {

    @Override
    public void contextDestroyed(ServletContextEvent servletContextEvent) {
         //Context destroyed code here
    }

    @Override
    public void contextInitialized(ServletContextEvent servletContextEvent)
    {
        //Context initialized code here
    }
}
Run Code Online (Sandbox Code Playgroud)


use*_*730 1

我找到了另一种独立于 spring 和 tomcat 的方法:注释@PostConstruct。在代码中:

@PostConstruct
public void init() {
    // initialization code goes here
}
Run Code Online (Sandbox Code Playgroud)

无论我独立运行应用程序还是在 tomcat 中运行该方法,都会执行此方法。

有关详细信息,请参阅如何在 bean 初始化完成后调用方法? 或者Spring Controller 中的 Init 方法(注解版)