微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在Spring Boot Web应用程序的Bean初始化代码中获取随机http端口?

如何解决如何在Spring Boot Web应用程序的Bean初始化代码中获取随机http端口?

我有一个 Spring Boot 应用程序,我在设置中将 http 端口设置为随机 (0)。 我在应用程序中有一个组件,它在一个方法获取端口:

@Autowired
private ServletWebServerApplicationContext webServerAppCtxt;

public void doWork() {
    int localHttpServerPort = webServerAppCtxt.getWebServer().getPort();

但是,当我尝试在 Bean 初始值设定项中执行相同的代码时:

@Bean
public IMyBean myBean(ServletWebServerApplicationContext applicationContext) {

    int localHttpServerPort = applicationContext.getWebServer().getPort();

localHttpServer 端口始终为 8080,因此使用随机端口不起作用。 我的问题是,是否可以确保在调用 bean 初始值设定项方法之前完全初始化服务器/服务器上下文,以便可以在 bean 初始值设定项中检索到使用随机端口?

解决方法

你可以在配置文件中这样定义

server:
  port: ${random.int(1000,9999)}
,

试试

@Autowired
Environment environment;

String port = environment.getProperty("server.port");

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。