0
spring-boot
アプリケーションがembedded tomcat
またはstandalone tomcat server
で実行されているかどうかを検出できますか?埋め込みまたはスタンドアロンのアプリケーションサーバーを検出するにはどうすればよいですか?
スタンドアロンサーバーでのみ実行する@Configuration
を作成します。 しかし、私はこのためには@Profile
を使いたくありません。すべてのプロファイルは、開発中に埋め込みのtomcatの中で実行可能でなければならないからです。
次は、これまで動作しません:
@Configuration
@AutoConfigureAfter(EmbeddedServletContainerAutoConfiguration.class)
@ConditionalOnMissingBean(EmbeddedServletContainerFactory.class)
@ConditionalOnMissingBean(TomcatEmbeddedServletContainerFactory.class)
public class TomcatConfig {
@ConditionalOnMissingBean(EmbeddedServletContainerFactory.class)
@ConditionalOnMissingBean(TomcatEmbeddedServletContainerFactory.class)
@Bean
public MyBean init() {
//this should not execute in embedded tomcat
}
}
@Configuration
public class MainConfig extends SpringBootServletInitializer {
public static void main(String[] args) {
SpringApplication.run(MainConfig.class, args);
}
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(MainConfig.class);
}
}
ああを確認することができます! – membersound
実際に私はTomcatEmbeddedServletContainerFactory'に対する私の答えをTomcat固有のものに変更しました。私は両方を試してみてください。 @membersound – Strelok
スタンドアロンのTomcat内でのみ設定を実行したいので、クラスレベルと '@ Bean'レベルの両方で' @ConditionalOnMissingBean(TomcatEmbeddedServletContainerFactory.class) 'を使ってみました。しかし、Beanはまだ組み込み開発環境で実行されて作成されています。 Tomcatの自動設定後に設定を遅らせることは可能でしょうか?しかし、私は 'TomcatEmbeddedServletContainerFactory'を設定する春のリポジトリでクラスを見つけることができませんでした... – membersound