使用两个端口配置Spring Boot

我正在尝试使用两个不同的端口在Spring Boot" title="Spring Boot">Spring Boot中配置应用程序,但是我还没有停下来。我的第一个替代方法是使用两个控制器,我在两个控制器中使用container.setPort(8080);定义了一个@Bean。我的第二个替代方法是添加执行器依赖性并更改管理端口,但我的应用程序无法运行。“地址已在使用中:绑定”,如何配置具有两个端口的应用程序?我想要一个端口用于管理,而另一个端口则用于查询我的api。

回答:

正如前面已经提到的,server.portmanagement.port沿management.context-path特性可以被设置为使嵌入容器监听不同的端口(管理相关的属性来访问Actuator端点)。

要侦听除server.port和以外的端口management.port

@Configuration

public class EmbeddedTomcatConfiguration {

@Value("${server.additionalPorts}")

private String additionalPorts;

@Bean

public EmbeddedServletContainerFactory servletContainer() {

TomcatEmbeddedServletContainerFactory tomcat = new TomcatEmbeddedServletContainerFactory();

Connector[] additionalConnectors = this.additionalConnector();

if (additionalConnectors != null && additionalConnectors.length > 0) {

tomcat.addAdditionalTomcatConnectors(additionalConnectors);

}

return tomcat;

}

private Connector[] additionalConnector() {

if (StringUtils.isBlank(this.additionalPorts)) {

return null;

}

String[] ports = this.additionalPorts.split(",");

List<Connector> result = new ArrayList<>();

for (String port : ports) {

Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");

connector.setScheme("http");

connector.setPort(Integer.valueOf(port));

result.add(connector);

}

return result.toArray(new Connector[] {});

}

}

application.yml

server:

port: ${appPort:8800}

additionalPorts: 8881,8882

应用程序

@SpringBootApplication

@ComponentScan(...)

@Import(EmbeddedTomcatConfiguration.class)

public Application {

public static void main(String[] args) {

SpringApplication.run(Application .class, args);

}

}

以上是 使用两个端口配置Spring Boot 的全部内容, 来源链接: utcz.com/qa/432165.html

回到顶部