我想将我的项目转换为基于弹簧的产品。
我的第一步是将我的java Web应用程序从生成的WAR文件转换为独立的可执行jar,由spring boot启动。
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.
我希望有一些指导我进行转型。
答案 0 :(得分:12)
据我所知,这个应用程序不是Spring MVC应用程序 - 如果是这样的话,它可能会更容易迁移。目标(根据github问题)是获取可执行的JAR。虽然基本计划可能是首先使用Spring Boot迁移到WAR,然后在运行时再迁移到JAR。这是一个非常简单的应用程序,所以我们真正需要做的就是查看web.xml
并将其转换为相关的Spring Boot功能。以下是一些一般性指南:
通过扩展SpringBootServletInitializer
(例如,在名为Application
的类中)创建可部署的WAR,并添加Spring Boot @EnableAutoConfiguration
注释。例如:
@Configuration
@EnableAutoConfiguration
@ComponentScan
public class Application extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(Application.class);
}
然后添加一些配置:
类型为@Bean
或Servlet
的{{1}}将该bean安装在容器中,就好像它是ServletRegistrationBean
和<servlet/>
一样<servlet-mapping/>
1}}
类型为web.xml
或@Bean
的{{1}}行为相似(如Filter
和FilterRegistrationBean
)。
在这种情况下,<filter/>
植根于XML文件,因此最简单的第一步是<filter-mapping/>
进入Spring ApplicationContext
。这个很简单,可以用@Import
定义在几行中重新创建。
静态资源可以移至类路径根目录中的Application
(或@Bean
或/public
或/static
)
一旦WAR工作,我们通过向/resources
添加/META-INFO/resources
方法使其可执行,例如
main
另请参阅Getting Started Guide on Converting a JAR to a WAR。
正如我所说,这个特定应用程序的最大问题是它不是Spring MVC应用程序。正如爱尔兰人可能会说“如果我想去那里,先生,我不会从这里开始。”这是一个有趣的问题,但我建议其他任何希望将Spring应用程序迁移到Spring Boot的人阅读这里的一般建议,但也许可以在其他地方开始另一个讨论。
无论如何,我会在转换这个特定的应用程序时有一个bash(源代码jar会很好),如果我学到任何新东西,请更新这个响应。