又是一个巨坑! 项目需要在启动之后就添加加密机类型到java中! 我们某一位同事贪图方便,直接在springboot启动类run方法下方添加代码。在eclipse中运行一点问题没有!但是部署到tomcat中是不会运行的。
解决方法:
springboot项目通过继承ServletContextListener类实现tomcat启动完成之后执行代码;
ServletContextListener是监听tomcat的状态的类,可以监控tomcat启动完成后和tomcat停止运行时或者说销毁时需要运行的代码
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import org.springframework.stereotype.Component;
import org.springframework.web.context.support.WebApplicationContextUtils;
@Component
public class ProviderContextListener implements ServletContextListener{
@Override
public void contextInitialized(ServletContextEvent event) {
WebApplicationContextUtils.getRequiredWebApplicationContext(event.getServletContext())
.getAutowireCapableBeanFactory().autowireBean(this);
System.out.println("这是tomcat启动后执行的代码");
}
@Override
public void contextDestroyed(ServletContextEvent sce) {
System.out.println("这是tomcat销毁后执行的代码");
}
}
造孽啊。。。。。