我想将war应用程序迁移到Spring引导应用程序。
我按照http://docs.spring.io/spring-boot/docs/1.4.1.RELEASE/reference/htmlsingle/#howto-convert-an-existing-application-to-spring-boot的说明进行操作,并制作了类
@EnableAutoConfiguration
public class MyInitializer extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
application.banner(new MyBanner());
application.sources(MyEndpoint.class);
return application;
}
}
Run Code Online (Sandbox Code Playgroud)
我得到了可部署的WAR。
在下一阶段,我想获取可执行的WAR。我上课了
public class MyApplication {
public static void main(String[] args) {
SpringApplication.run(MyInitializer.class, args);
}
}
Run Code Online (Sandbox Code Playgroud)
问题是当我调用java -jar target/myapp.warMyInitializer#configure时未执行
我有点困惑。如何避免从MyInitializer到MyApplication的复制粘贴逻辑。我必须将这些课程合为一体吗?
就个人而言,我将两者合并在一起:
@SpringBootApplication
public class MyApplication extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
return MyApplication.build(builder);
}
public static void main(String[] args) {
MyApplication.build(new SpringApplicationBuilder()).run(args);
}
private static SpringApplicationBuilder build(SpringApplicationBuilder builder) {
return builder.banner(new MyBanner()).sources(MyEndpoint.class);
}
}
Run Code Online (Sandbox Code Playgroud)
我真的不认为SpringBootServletInitializer将WAR作为可执行文件启动时将永远不会执行。即使文件扩展名是WAR,您实际上也将其用作JAR。
从命令行启动时,Spring Boot入口点是主要方法,SpringBootServletInitializer只是不被解释为Spring Boot入口点。
SpringBootServletInitializer仅在部署为WAR时使用:容器将使用SpringBoot SpringBootServletInitializer作为入口(而main方法将被完全忽略)。
| 归档时间: |
|
| 查看次数: |
2733 次 |
| 最近记录: |