我想将我的项目切换到基于Spring的产品。
我的第一步是将Java Web应用程序从生成的WAR文件转换为由Spring Boot驱动的独立可执行jar。
让我们来看一个来自github的开源Web应用程序示例:Vaadin-Spring Web Application
可以在此处找到web.xml文件。
根上下文文件可以在这里找到。
我希望有一些指导让我执行转换。
我还在spring-boot项目中提交了一个问题。
据我所知,该应用程序不是Spring MVC应用程序- 如果可以的话,迁移起来可能会容易得多。(根据github问题)的目标是获取可执行的JAR。不过,基本计划可能是先使用Spring Boot迁移到WAR,然后在可行时迁移到JAR。这是一个非常简单的应用程序,因此我们真正需要做的就是查看web.xml并将其转换为相关的Spring Boot功能。以下是一些一般指南:
web.xml
通过扩展SpringBootServletInitializer(例如,在名为的类中Application)创建可部署的WAR ,并添加Spring Boot @EnableAutoConfiguration批注。例:
SpringBootServletInitializer
Application
@EnableAutoConfiguration
@Configuration @EnableAutoConfiguration @ComponentScan public class Application extends SpringBootServletInitializer { @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { return application.sources(Application.class); }
然后添加一些配置:
@Bean类型为A Servlet或ServletRegistrationBean将那个bean安装在容器中,就像它是<servlet/>and <servlet-mapping/>inweb.xml
@Bean
Servlet
ServletRegistrationBean
<servlet/>
<servlet-mapping/>
甲@Bean型的Filter或FilterRegistrationBean表现得类似(如<filter/>和<filter-mapping/>)。
Filter
FilterRegistrationBean
<filter/>
<filter-mapping/>
在ApplicationContext这种情况下根植于一个XML文件,所以最简单的第一步是@Import该到了Spring Application。这一步骤非常简单,可以在几行中将其重新@Bean定义。
ApplicationContext
@Import
可以将静态资源移至类路径根目录中/public(或/static或/resources或/META-INFO/resources)
/public
/static
/resources
/META-INFO/resources
一旦WAR工作了,我们可以通过添加一个main方法使其成为可执行文件Application,例如
main
public static void main(String[] args) { SpringApplication.run(Application.class, args); }
另请参阅有关将JAR转换为WAR的入门指南。
正如我所说,此特定应用程序的最大问题是它不是Spring MVC应用程序。正如爱尔兰人可能会说:“先生,如果我想去那里,我不会从这里开始。” 总的来说,这是一个有趣的问题,但是我建议其他希望将Spring应用程序迁移到Spring Boot的人阅读这里的一般建议,但也许可以在其他地方开始另一个讨论。
无论如何,我会在转换此特定应用程序时大吃一惊(源代码罐会很好),如果我学到新知识,就会更新此响应。