Java 春季战靴部署
如何在Spring2.1.4启动应用程序(打包为WAR)中控制我是创建Servlet3.1还是4.0Web应用程序。通常,当使用web.xml web应用程序描述符时,web应用程序上的属性将宣布所使用规范的版本。在没有web.xml的SpringWebApplicationInitializer应用程序中(这是我的情况),没有这样的广告Java 春季战靴部署,java,spring,spring-boot,Java,Spring,Spring Boot,如何在Spring2.1.4启动应用程序(打包为WAR)中控制我是创建Servlet3.1还是4.0Web应用程序。通常,当使用web.xml web应用程序描述符时,web应用程序上的属性将宣布所使用规范的版本。在没有web.xml的SpringWebApplicationInitializer应用程序中(这是我的情况),没有这样的广告 仅仅是使用servlet 3.1功能并将其部署到容器中并希望它能工作吗?由于servlet 3和Java EE 6引入了注释,如@WebServlet,@We
仅仅是使用servlet 3.1功能并将其部署到容器中并希望它能工作吗?由于servlet 3和Java EE 6引入了注释,如
@WebServlet
,@WebFilter
,@WebListener
,因此web.xml
文件是可选的
但是,无法使用在
web.xml
之外声明此信息,因此您必须包含该文件并指定版本。在发布此问题一年多后,我发现maven通过存在声明为依赖项的特定API来做出此决定。例如,如果在Pom文件中有javax.servlet:javax.servlet api:4.0.1依赖项,maven将采用servlet 4.0容器。我相信SpringBoot不支持这一点,但我认为它应该支持。作为旁注,M2eclipse插件也以这种方式工作容器如何知道没有web.xml的WAR文件是否使用了其实现不支持的功能?例如,如果容器是3.1兼容的,它会在运行时失败时才发现WAR包含4.0特性吗?如果是这样,应该在规范中更新注释,以公布WAR文件所需的规范,就像web.xml当前所做的那样。