我们为什么要扩展SpringBootServletInitializer
以便将SpringBoot
应用程序运行到外部tomcat
?
如果没有扩展SpringBootServletInitializer
它在嵌入式tomcat上运行那么为什么在将SpringBootServletInitializer
部署到外部tomcat时需要扩展 <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.v4.widget.SwipeRefreshLayout
android:id="@+id/activity_main_swipe_refresh_layout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.v7.widget.RecyclerView
android:id="@+id/recycle_mall_list"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"/>
</android.support.v4.widget.SwipeRefreshLayout>
<RelativeLayout
android:id="@+id/relative_layout_error"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:visibility="visible">
<include
layout="@layout/wifi_error_layout"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true" />
</RelativeLayout>
</FrameLayout>
?
答案 0 :(得分:6)
较旧的Servlet容器不支持Servlet 3.0中使用的 ServletContextInitializer 引导程序。您仍然可以在这些容器中使用Spring和Spring Boot,但是您需要将web.xml添加到应用程序并将其配置为通过 DispatcherServlet 加载 ApplicationContext
为了创建可部署的war文件,是提供 SpringBootServletInitializer 子类并覆盖其 configure 方法。这利用了Spring Framework的Servlet 3.0支持,并允许您在servlet容器启动时配置应用程序。通常,您更新应用程序的主类以扩展 SpringBootServletInitializer 。
function getCountHazardsToUser() {
$.ajax({
async: true,
url: web + "/NumberOfHazardsToUser",
method: "GET",
data: '{"userid":"' + localStorage.getItem("id") + '"}',
dataType: "json",
contentType: "application/json",
success: function (data) {
var res = data.d;
hazardsNumber = res;
},
error: function () {
hazardsNumber = -1;
}
});
您可以参考以下链接
https://docs.spring.io/spring-boot/docs/current/reference/html/howto-traditional-deployment.html
答案 1 :(得分:1)
以下是一些更多信息:
为了部署基于Servlet
的网络应用程序(如Spring
),您实际上需要提供传统的web.xml
。
我们也可以使用WebApplicationInitializer接口以编程方式执行相同的操作。根据文档
要在Servlet 3.0+环境中实现的接口 以编程方式配置ServletContext - 而不是(或 可能与传统的基于web.xml的方法结合使用。
由于SpringBoot建议使用JavaConfiguration
而不是xml configuration
。
它使用JavaConfiguration而不是web.xml
。
它有SpringBootServletInitializer
类,最终实现WebApplicationInitializer
接口并覆盖其onStartup
来配置。