【问题标题】:Change default Port of Spring Boot application from frontend with thymeleaf使用 thymeleaf 从前端更改 Spring Boot 应用程序的默认端口
【发布时间】:2021-04-21 06:22:40
【问题描述】:

是否可以通过@Controller 上的端点从前端(通过使用 thymeleaf)更改 Spring Boot 端口?

我如何以编程方式使用新配置的端口重新启动应用程序?

【问题讨论】:

  • 您要更改服务器端口吗?
  • 你能详细说明你为什么要这样做吗?
  • 应用程序应该在一台服务器上与多个应用程序一起运行。应排除端口冲突。用户应在前端配置应用程序端口。
  • @SyedMustafaHussain - 是的,我想以编程方式更改服务器端口

标签: java spring spring-boot thymeleaf


【解决方案1】:

here所说,你可以这样设置服务器端口:

import org.springframework.boot.web.server.ConfigurableWebServerFactory;
import org.springframework.boot.web.server.WebServerFactoryCustomizer;
import org.springframework.stereotype.Component; 

@Component
public class AppCustomContainer 
  implements WebServerFactoryCustomizer<ConfigurableWebServerFactory> {

  @Override
  public void customize(ConfigurableWebServerFactory factory) {
  
   factory.setPort(1234);
  
  }
}

您可以使用文件来存储端口(更改时)而不是 1234,并在启动时加载它

之后,您可以按照here 的说明重新启动应用程序:

  • 添加执行器和 spring-cloud:
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter</artifactId>
    <version>2.0.0.RELEASE</version>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
  • application.properties:management.endpoint.restart.enabled = true中启用重启
  • 添加RestartEndpoint的实例:
@Autowired
private RestartEndpoint restartEndpoint;

并运行此命令以重新启动:

Thread restartThread = new Thread(restartEndpoint::restart);
restartThread.setDaemon(false);
restartThread.start();

【讨论】:

  • 不要自己创建线程,这最终会崩溃。
  • 我认为线程应该在重新启动后终止,但我只是从here 复制了它,正如我在回答中所说的那样。
猜你喜欢
  • 2015-07-25
  • 1970-01-01
  • 2018-04-22
  • 2021-07-31
  • 1970-01-01
  • 2015-04-09
  • 1970-01-01
  • 2017-03-07
  • 2019-05-01
相关资源
最近更新 更多