spring-boot - Spring Boot 如何在应用服务器上工作

标签 spring-boot

我正在将我们的 Spring REST 应用程序迁移到 Spring Boot 微服务。我有些疑惑:

据我所知,spring boot 有一个 main()它调用静态 run()它存在于 SpringApplication 中。所以,当我们在 Eclipse IDE 中将它作为“Java 应用程序”运行时,这个 main()被调用和 @SpringBootApplication注释发挥作用。但是当我在 Websphere Application Servers 上部署这个应用程序时,它是如何工作的,因为现在 main()不会被调用。那么如何在不调用 main() 的情况下加载所有 bean .

最佳答案

Spring Boot 隐式启动了一个嵌入式服务器,它包含在 spring-boot-starter-tomcat 中。依赖性。这就是为什么main()方法在引导环境中有效。

典型的解决方案是创建两个配置文件 - 一个用于启动开发,另一个用于部署 - 那么您可能有几个起点。

开发配置:

@Configuration
@Profile(Profiles.DEV)
@Import(AppConfig.class)
public class Application {

    public static void main(String[] args) {
        new SpringApplicationBuilder(Application.class)
            .profiles(Profiles.DEV)
            .run(args);
    }
}

部署配置(适用于 WAS、tomcat 等):
@Configuration
@Profile(Profiles.DEPLOY)
@Import(AppConfig.class)
public class ApplicationTomcat extends SpringBootServletInitializer {

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application
            .profiles(Profiles.DEPLOY)
            .sources(ApplicationTomcat.class);
    }
}

简介:
public class Profiles {

    public final static String DEV = "dev";

    public final static String DEPLOY = "deploy";
}

在您的部署配置文件中,不要忘记排除 spring-boot-starter-tomcat依赖并使其成为 war捆。

通过这种方式,您可以以标准方式在 WAS(或 tomcat,...)上部署应用程序,并使用 main() 在本地启动您的应用程序方法。

关于spring-boot - Spring Boot 如何在应用服务器上工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51870138/

相关文章:

java - 测试不扩展任何 Spring Data Repository 的存储库

spring-boot - 如何扩展 spring boot 自动配置的行为?

java - 如果我们使用@embedded注解,HQL(hibernate查询语言)需要如何改变?

spring-boot - 如果 Mono 为空,则创建一个未找到的 ServerResponse

带有 JAX-RS API 2.1 (SSE) 的 spring-boot-jersey

java - 将 iCalendar 发送到网页时没有行分隔。 java

java - : "Launching <My_APP>". ATTR_EXCLUDE_TEST_CODE 期间发生内部错误

java - @Column(unique = true) 产生警告 o.h.engine.jdbc.spi.SqlExceptionHelper : SQL Warning Code: 0, SQLState: 00000

java - Spring Rest Docs 片段模板被忽略

java - Spring & Couchbase - 如何通过代码创建索引