我想将我的项目切换到基于 spring 的产品。
我的第一步是将我的 java web 应用程序从生成的 WAR 文件转换为由 spring boot 提供支持的独立可执行 jar。
Let's take a open source web application example from github.: Vaadin-Spring Web Application
The web.xml file can be found here.
The root-context file can be found here.
我希望有一些指导可以帮助我进行转换。
I have also submit an issue in the spring-boot project.
最佳答案
据我所知,这个应用程序不是 Spring MVC 应用程序——如果是的话,它可能会更容易迁移。目标(根据 github 问题)是获得一个可执行的 JAR。不过,基本计划可能是首先使用 Spring Boot 迁移到 WAR,然后在运行后迁移到 JAR。这是一个非常简单的应用程序,所以我们真正需要做的就是查看 web.xml
并将其翻译成相关的 Spring Boot 特性。以下是一些通用指南:
通过扩展 SpringBootServletInitializer
创建可部署的 WAR (例如,在名为 Application
的类中),并添加 Spring Boot @EnableAutoConfiguration
注解。例子:
@Configuration
@EnableAutoConfiguration
@ComponentScan
public class Application extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(Application.class);
}
然后添加一些配置:
@Bean
类型 Servlet
或 ServletRegistrationBean
将该 bean 安装在容器中,就像它是 <servlet/>
和 <servlet-mapping/>
在 web.xml
@Bean
类型 Filter
或 FilterRegistrationBean
行为类似(如 <filter/>
和 <filter-mapping/>
)。 ApplicationContext
在这种情况下,根植于一个 XML 文件中,所以最简单的第一步是 @Import
那个成春Application
.这个非常简单,只需几行即可重新创建为 @Bean
定义。 /public
(或 /static
或 /resources
或 /META-INFO/resources
)在类路径根 一旦 WAR 工作,我们通过添加
main
使其可执行我们的方法 Application
,例如public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
另见 Getting Started Guide on Converting a JAR to a WAR .
正如我所说,这个特定应用程序的最大问题是它不是 Spring MVC 应用程序。正如爱尔兰人可能会说“如果我想到达那里,先生,我不会从这里开始。”一般来说,这是一个有趣的问题,但我建议其他任何希望将 Spring 应用程序迁移到 Spring Boot 的人阅读这里的一般建议,但也许可以在其他地方开始另一次讨论。
无论如何,我将在转换这个特定的应用程序(源代码 jars 会很好)时有一个 bash,如果我学到任何新东西,请更新此响应。
关于spring - 如何从传统的 Java Web 应用程序(使用 web.xml)迁移到 Spring Boot?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20240939/