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

Spring Boot-如何在运行时获得端口而不使用Spring注释

杜良骏
2023-03-14

我有一个基于aspectj的通用java代理,它在几个spring boot应用程序(和几个spring boot版本)上运行。我试图找到一种在运行时获取端口的方法,在应用程序启动时(在发出请求之前)以编程方式获取端口。问题是-

>

  • 我无法使用常规方式获取Spring Boot端口,如https://stackoverflow.com/questions/30312058/spring-boot-how-to-get-the-running-port中描述的,其中包括@Autowired注释等。

    我正在寻找应用程序启动后的端口,而不依赖于请求。

    我正在寻找一种访问LocalServerPort对象的方法或任何其他允许我访问端口的选项。

    谢谢你的帮助

  • 共有1个答案

    谷梁卓
    2023-03-14

    经过一番调查,正如我提到的,我使用了aspectj,我使用了以下工具:

     after():
             execution(org.springframework.boot.context.embedded.EmbeddedServletContainer+.new(..))
    

    并使用getPort()方法直接从EmbeddedServletContainer实例获取端口。在Tomcat的情况下,如果端口是-1,我使用嵌入的Tomcat对象从连接器本身获取端口。

     类似资料:
    • 我正在试用Netflix OSS来实现一个微服务架构。我希望在运行时从bootstrap.yml文件记录以查看哪个实例为请求提供服务。 我使用的是Java8。 重要的库版本为: *spring-boot-starter-web-1.5.8 *spring-boot-starter-tomcat-1.5.8 *tomcat-embedd-core-8.5.23 在浏览了stackoverflow之后

    • 我有一个Spring Boot应用程序(使用嵌入式Tomcat7),并且我在中设置了,这样我就可以有一个随机端口。在服务器启动并在一个端口上运行之后,我需要能够获得所选择的端口。 我不能使用,因为它为零。这是一条看似简单的信息,那么为什么我不能从我的java代码中访问它呢?我如何访问它?

    • 我如何获得在运行时部署我的应用程序的主机和端口,以便在我的java方法中使用它?

    • 我正在用Apache Camel路由为Spring Boot应用程序创建一些单元测试,使用Spock作为测试框架,我需要模拟来自另一个应用程序的响应。我为此制作了一个模拟控制器,但我需要将测试正在运行的端口注入一个属性。有没有方法获得测试正在运行的端口? 我试过 另外,是否有方法在文件中注入该随机端口?理想情况下,我需要在文件中执行以下操作: 其中端口是运行测试的随机端口。

    • 问题内容: 我有一个spring boot应用程序(使用嵌入式tomcat 7),并且已经设置好了,所以我可以有一个随机端口。服务器启动并在端口上运行后,我需要能够获取所选择的端口。 我不能使用,因为它是零。这是一条看似简单的信息,所以为什么不能从我的Java代码访问它呢?我该如何访问? 问题答案: 该解决方案并不像我想要的那样优雅,但是我可以使用它。阅读spring文档,我可以侦听Embedde

    • 脚本:-dcom.sun.management.jmxRemote-dcom.sun.management.jmxRemote.port=9890