首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将Spring web应用程序迁移到Spring Boot

将Spring web应用程序迁移到Spring Boot
EN

Stack Overflow用户
提问于 2016-02-16 16:52:19
回答 3查看 6.1K关注 0票数 1

我有一个web项目,我很容易在tomcat上解开它。事实上,我有一个实现WebApplicationInitializerWebAppInitializer类(这个类真的很胖),因为您知道每个支持Servlet3.0的应用程序服务器都可以很容易地检测到它并尝试引导它。现在我想知道有没有可能使用spring boot starter,并且没有任何进一步的配置,我将我的WebAppInitializer传递给它,spring boot基于我的WebAppInitializer boot我的项目?

我只想使用spring-boot的方法在Tomcat上部署应用程序,我不想使用其他spring-boot的工具。

EN

回答 3

Stack Overflow用户

发布于 2018-10-25 13:55:39

是的,这是一个老问题。但我没有看到一个被接受的答案,最接近工作答案的答案只有一个到外部资源的链接。所以就是这样了。

https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#boot-features-embedded-container-context-initializer

28.4.2 Servlet上下文初始化

嵌入式servlet容器不直接执行Servlet Spring接口或3.0+的org.springframework.web.WebApplicationInitializer接口。这是一个有意的设计决策,旨在降低设计用于在war中运行的第三方库可能会破坏Spring Boot应用程序的风险。

如果需要在Spring Boot应用程序中执行servlet上下文初始化,则应该注册实现org.springframework.boot.web.servlet.ServletContextInitializer接口的bean。单个onStartup方法提供对ServletContext的访问,如果需要,可以很容易地将其用作现有WebApplicationInitializer的适配器。

扫描Servlets、过滤器和监听程序

当使用嵌入式容器时,可以使用@ServletComponentScan启用使用@WebServlet、@WebFilter和@WebListener注释的类的自动注册。

Tip @ServletComponentScan在使用容器的内置发现机制的独立容器中不起作用。

我试过了。它起作用了

在我的用例中,我有一个包含几十个few应用程序的项目,旨在作为WAR在Tomcat上运行。许多逻辑都被巧妙地写进了WebApplicationInitializers中,似乎应该有一种更容易的方法来重用所有这些逻辑。将implements ServletContextInitializer添加到这些初始化器中,并通过@Configuration类将它们公开为beans,使用SpringBoot的嵌入式Tomcat点亮了我的with服务器。

票数 1
EN

Stack Overflow用户

发布于 2016-02-16 16:55:32

Spring Boot docs

如果

Servlet 3.0+应用程序已经使用了Spring Servlet 3.0+初始化器支持类,那么它们可以非常容易地进行转换。通常,现有WebApplicationInitializer中的所有代码都可以移动到SpringBootServletInitializer中。如果您现有的应用程序有多个ApplicationContext (例如,如果它使用AbstractDispatcherServletInitializer),那么您可以将所有上下文源压缩到一个SpringApplication中。你可能会遇到的主要复杂情况是,如果这不起作用,你需要维护上下文层次结构。有关示例,请参阅有关构建层次结构的条目。包含web特定功能的现有父上下文通常需要拆分,以便所有ServletContextAware组件都在子上下文中。

是的,这是可能的,但您需要将其转换为SpringBootServletInitializer,这看起来非常相似。

票数 0
EN

Stack Overflow用户

发布于 2016-02-16 20:49:37

http://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#howto-create-a-deployable-war-file准确地描述了如何做到这一点

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35427841

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档