当前位置: 首页 > 知识库问答 >
问题:

访问服务器端口@Value(${local.server.port})不工作[重复]

夏侯浩气
2023-03-14

我目前正在处理一个Springboot应用程序,我需要访问当前的服务器端口。端口是随机分配的,因为我已经定义server.port=0在我的application.properties

我已经看到多个关于这一点的帖子,它们都指向添加:

@Value("${local.server.port}")
private int port;

但是,启动应用程序时提示我使用无法解析占位符“local”。服务器字符串值“${local.server.port}”中的端口“

澄清一下,我不是在设置测试。我使用的是Springboot 1.5。7.我遗漏了什么吗?我尝试运行以下简单示例:

@SpringBootApplication
public class Main {

    @Value("${local.server.port}")
    private int port;

    public static void main(String[] args) {
        SpringApplication.run(Main.class, args);
    }

    @PostConstruct
    public void printsomething() {
        System.out.println("PORT " + this.port);
    }
}

共有1个答案

濮阳和泰
2023-03-14

如问题注释部分所述,并参考了由@solidate链接的文档,@Value(${local.server.port}”)在运行应用程序时不能使用。解决方案是执行以下操作:

@Component
public class PortListener implements ApplicationListener<EmbeddedServletContainerInitializedEvent> {

    private static int port;

    @Override
    public void onApplicationEvent(final EmbeddedServletContainerInitializedEvent event) {
        port = event.getEmbeddedServletContainer().getPort();
    }

    public static int getPort() {
        return port;
    }
}
 类似资料:
  • 我目前正在处理一个Springboot应用程序,我需要访问当前的服务器端口。端口是随机分配的,因为我在中定义了。 我看到了很多关于这一点的文章,它们都指出: 但是,启动应用程序时使用中的占位符“local.server.port 澄清一下,我不是在设置测试。我使用的是Springboot1.5.7。我是不是漏掉了什么?我正在尝试运行以下简单示例:

  • 我正在将Spring Boot从1.3升级到1.5。对于升级到1.5,我已经替换了 还有,我在用

  • 我是一个码头工人,我在前几天阅读了如何使用它的官方教程。我决定将我非常简单的spring-boot应用程序作为服务部署到集群中,但我无法从外部访问它。顺便说一下,当我用docker run启动docker时,容器是可以访问的。 所以我的春靴tomcat正在收听8081。 Dockerfile: docker-compose.yml: 我部署了两个服务,一个可视化程序和一个Spring引导应用程序。

  • 在运行rails 5.2.2和ruby 2.6.1的家用服务器上,一切正常;但是在我的linode上,我拒绝了用户“部署”@“localhost”的访问(使用密码:是)在家用服务器的database.yml中,我使用大卫作为用户,即unix帐户。在linode上使用相同的database.yml,我已经部署为database.yml文件中的用户。部署是linode服务器的unix帐户。 我已经尝试

  • 我有一个Spring Boot项目,其中服务器端口总是设置为8080,而不考虑server.port属性。将正确重写除server.port之外的所有属性。属性配置bean: 这意味着我的类路径application.properties是默认值(dev properties),它被jvm参数dproperties.location=C:\application\config覆盖。 Server.

  • 我花了两天时间想弄明白这一点。我有一个wordpress页面与四场忍者形式。其中一个字段是电子邮件。我创建了一个API(在我们的.NET核心项目中),它检查并抛出一个400的错误,如果我们的DB中存在一个已经具有该电子邮件地址的邮件。我正在使用Ninja Forms Webhook特性将表单提交给我的API。我只想向用户显示我的400错误消息。 我正在使用以下来自Ninja Forms的文档,但它