我想将我的项目切换到基于弹簧的产品。
我的第一步是将我的 java Web 应用程序从生成的 WAR 文件转换为由 Spring Boot 提供支持的独立可执行 jar。
让我们从 github 上拿一个开源的 Web 应用示例:Vaadin-Spring Web Application
我希望有一些指导我来执行转换。
我想将我的项目切换到基于弹簧的产品。
我的第一步是将我的 java Web 应用程序从生成的 WAR 文件转换为由 Spring Boot 提供支持的独立可执行 jar。
让我们从 github 上拿一个开源的 Web 应用示例:Vaadin-Spring Web Application
我希望有一些指导我来执行转换。
据我所知,此应用程序不是 Spring MVC 应用程序 - 如果是,迁移可能会容易得多。目标(根据 github 问题)是获取可执行的 JAR。不过,基本计划可能是首先使用 Spring Boot 迁移到 WAR,然后在 JAR 工作后迁移到 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);
}
然后添加一些配置:
A@Bean
类型Servlet
或ServletRegistrationBean
将该 bean 安装在容器中,就好像它是 a<servlet/>
和<servlet-mapping/>
inweb.xml
@Bean
类型Filter
or的 AFilterRegistrationBean
行为相似(如 a<filter/>
和<filter-mapping/>
)。
在ApplicationContext
这种情况下,根植于 XML 文件中,因此最简单的第一步就是将@Import
其放入 SpringApplication
中。这个非常简单,可以在几行中重新创建它作为@Bean
定义。
静态资源可以移动到/public
(或/static
或/resources
或/META-INFO/resources
)类路径根目录中
main
一旦 WAR 开始工作,我们通过向我们的 WAR 中添加一个方法来使其可执行Application
,例如
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
正如我所说,这个特定应用程序的最大问题是它不是 Spring MVC 应用程序。正如爱尔兰人可能会说的“如果我想到达那里,先生,我不会从这里开始。” 总的来说,这是一个有趣的问题,但我建议任何想要将 Spring 应用程序迁移到 Spring Boot 的人阅读这里的一般建议,但也许可以在其他地方开始另一个讨论。
无论如何,我会在转换这个特定的应用程序(源代码 jar 会很好)时大吃一惊,如果我学到任何新东西,我会更新这个响应。