Jue*_*ann 5 spring-boot spring-webflux
谁能告诉我使用Spring Boot 2和WebFlux时如何配置2个端口(用于HTTP和HTTPS)?任何提示表示赞赏!
但是,您可能可以通过两种方式使它工作。
默认情况下,Spring Boot WebFlux使用Netty。如果您已经为ssl配置过,那么Spring Boot将启动并打开端口8443(或任何您已配置的端口)。
然后,要添加8080,您可以执行以下操作:
@Autowired
HttpHandler httpHandler;
WebServer http;
@PostConstruct
public void start() {
ReactiveWebServerFactory factory = new NettyReactiveWebServerFactory(8080);
this.http = factory.getWebServer(this.httpHandler);
this.http.start();
}
@PreDestroy
public void stop() {
this.http.stop();
}
Run Code Online (Sandbox Code Playgroud)
由于您的https配置位于一个位置(application.yml),而您的http配置位于Java配置中,所以这有点笨拙,但是我已经用一个玩具应用程序对此进行了测试。不过,不确定该解决方案的稳定性如何。
可能可行的另一种选择是尝试其他建议的等效方法,但使用类的响应版本,即TomcatReactiveWebServerFactory。我不知道有任何方法可以为其提供多个连接器,但是您可以覆盖其getWebServer方法:
@Bean
TomcatReactiveWebServerFactory twoPorts() {
return new TomcatReactiveWebServerFactory(8443) {
@Override
public WebServer getWebServer(HttpHandler httpHandler) {
// .. copy lines from parent class
// .. and add your own Connector, similar to how tutorials describe for servlet-based support
}
}
}
Run Code Online (Sandbox Code Playgroud)
另外,有点混乱,我自己也没有尝试过这种方法。
当然,请跟踪该票证,以便您知道何时Spring Boot 2提供官方支持。
| 归档时间: |
|
| 查看次数: |
1955 次 |
| 最近记录: |