【问题标题】:Multiple Sprint boot configurations多个 Spring Boot 配置
【发布时间】:2018-02-26 07:04:28
【问题描述】:

我的 Spring Boot 应用程序中有两个带有 main 方法的类。
1. XYZToolApplication
2. XYZWebApplication
它们都扩展了SpringBootServletInitializer。两者都用@SpringBootApplication@Configuration 注释。

我使用 Gradle 作为构建工具。
我想做两件事:
1. 使用bootRun 和战争部署运行XYZWebApplication
2. 每当bootRun 命令提供命令行参数args 时,仅使用bootRun 运行XYZToolApplication

我将build.gradle修改为:

bootRun {
    main = 'com.XYZWebApplication'
    if ( project.hasProperty('args') ) {
        main = 'com.XYZToolApplication'
        args project.args.split('\\s+')
    }
    classpath = sourceSets.main.runtimeClasspath + configurations.dev
    jvmArgs = ["-Dspring.output.ansi.enabled=ALWAYS"]
}

war {
    doFirst {
        manifest {
            attributes(
                    "Implementation-Title": project.name,
                    "Implementation-Version": version,
                    "Implementation-Timestamp": new Date())
        }
    }
    archiveName 'xyz.war'
}

虽然我可以根据需要运行 bootRun,但是当我创建一个 war 存档并将其部署到 Tomcat8 时,会创建两个上下文,一个用于 XYZWebApplication,一个用于 XYZToolApplication。我可以在日志(catalina.out)中看到这一点。我只想创建 XYZWebApplication 上下文。

日志快照:

...
2017-09-15 19:20:59.209  INFO 23727 --- [ost-startStop-1] XYZWebApplication : Started XYZWebApplication in 7.677 seconds (JVM running for 10.57)  
....
2017-09-15 19:21:01.197  INFO 23727 --- [ost-startStop-1] XYZToolApplication : Started XYZToolApplication in 1.983 seconds (JVM running for 12.557)

我尝试在springBoot 任务和/或bootRepackage 任务和/或war 任务中指定主类,但没有帮助。

【问题讨论】:

    标签: tomcat spring-boot gradle


    【解决方案1】:

    根据SpringBootServletInitiaizer的文档:

    一个自以为是的 WebApplicationInitializer 来运行 SpringApplication 来自传统的 WAR 部署。绑定 Servlet、过滤器和 ServletContextInitializer bean 从应用程序上下文到 servlet 容器。
    如果你在使用 SpringBootServletInitializer 与您可能还想要的其他 WebApplicationInitializer 组合 添加@Ordered 注释来配置特定的启动顺序。
    请注意,只有当您是 构建一个war文件并部署它。如果您更喜欢运行嵌入式 容器,那么你根本不需要这个。

    所以我所做的只是不为XYZToolApplication 扩展SpringBootServletInitiaizer,因为我不想在这种情况下发动战争并部署它。

    【讨论】:

      猜你喜欢
      • 2018-08-01
      • 2020-09-20
      • 2017-09-06
      • 1970-01-01
      • 2014-03-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-09
      相关资源
      最近更新 更多