仅为嵌入式tomcat或嵌入式服务器创建Bean

Ami*_*ari 5 spring-boot

如果应用程序在嵌入式容器中运行,我希望创建 @Bean。如果应用程序在外部 tomcat 上运行,则不应创建该 bean。有什么办法我们可以创建 @Conditional 注释来仅当应用程序在嵌入式 tomcat 中运行时创建 bean。

And*_*son 3

您可以使用仅在使用嵌入式容器时才启用的 Spring 配置文件,而不是使用自定义条件。当您将 Spring Boot 应用程序部署到 Tomcat 时,它的 main 方法不会运行,这使其成为启用您只想在嵌入式情况下处于活动状态的配置文件的好地方。

像这样的东西:

@SpringBootApplication
public class So34924050Application extends SpringBootServletInitializer {

    @Bean
    @Profile("embedded")
    public EmbeddedOnlyBean embeddedOnlyBean() {
        return new EmbeddedOnlyBean();
    }

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(So34924050Application.class);
    }

    public static void main(String[] args) {
        new SpringApplicationBuilder(So34924050Application.class).profiles("embedded").run(args);
    }
}
Run Code Online (Sandbox Code Playgroud)