springboot实现获取当前服务器IP及当前项目使用的端口号Port

 更新时间:2023年12月15日 09:47:35   作者:搏·梦  
这篇文章主要介绍了springboot实现获取当前服务器IP及当前项目使用的端口号Port方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

如何获取当前服务使用的IP

使用InetAddress类即可,直接看例子:

public class test {
    public static void main(String[] args) throws Exception{
        InetAddress localHost = InetAddress.getLocalHost();
        System.out.println("localhost: " + localHost);
        System.out.println("getHostAddress:  " + localHost.getHostAddress());
        System.out.println("getHostName:  " + localHost.getHostName());
    }
}

获取启动使用的端口号

1. @Value、@ConfigurationProperties等方法 从配置文件中获取

在配置文件中配置server.port的值,之后通过@Value、@ConfigurationProperties 等方法从配置文件中获取

server:
  port: 8085

测试代码:

// 配置类 注入port的值
@Configuration
@ConfigurationProperties(prefix = "server")
public class PortConfig {
    @Getter
    @Setter
    private int port;
}

@RestController
public class TestController {

	// 或者使用@Value方式注入
    @Value("${server.port}")
    private int port;

	// 依赖配置
    @Autowired
    private PortConfig portConfig;

    @GetMapping("/test")
    public void test(){
        System.out.println(port);
        System.out.println(portConfig.getPort());
    }
}

2. 提问:如果上面配置文件中不配server.port值会发生什么?

@Value会导致启动报错,无法启动项目:

把@Value注释,启动正常,但是**@ConfigurationProperties获取到的值是0**

我们知道springboot默认的port是8080,如果你真的很想获取到port,代码只能按照下面方式写:

if(portConfig.getPort()==0){
	port = 8080;
} else {
	port = portConfig.getPort();
}

或者
int port = portConfig.getPort()>=0?portConfig.getPort():8080;

这样子确实也可以获取到服务启动实际使用的port.

3. 使用spring带的ServerProperties类

经过上面第二点说明,固然大家会选择使用配置类的方式,毕竟@Value会导致项目启动不起来,而springboot有又自带专门存储server开头的配置的类ServerProperties,都不用自己创建一个配置类了。

如下测试代码:

@RestController
public class TestController {

    @Autowired
    private ServerProperties serverProperties;
    
    @GetMapping("/test")
    public void test(){
        System.out.println(serverProperties.getPort());
    }
}

同理,若当配置文件中不写 server.port配置,则默认值是null

4. 使用ServletWebServerApplicationContext类(可推荐)

ServletWebServerApplicationContext类是web的上下文,里面有很多信息可以使用。

若没有在yaml有配置server.port,不会获取到null 而是默认值8080(内部已帮我们处理了)

代码:

不在yaml配置 server.pot

@RestController
public class ConfigController {
    
    @Autowired
    private ServletWebServerApplicationContext servletWebServerApplicationContext;

    @GetMapping("/testPort")
    public void testPort(){
        System.out.println(servletWebServerApplicationContext.getWebServer().getPort());
    }
}

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • SpringBoot整合Mybatis与thymleft实现增删改查功能详解

    SpringBoot整合Mybatis与thymleft实现增删改查功能详解

    MybatisPlus是国产的第三方插件, 它封装了许多常用的CURDapi,免去了我们写mapper.xml的重复劳动。本文将整合MybatisPlus实现增删改查功能,感兴趣的可以了解一下
    2022-12-12
  • Java Collections工具类中常用算法解析

    Java Collections工具类中常用算法解析

    在软件开发中,算法是非常重要的一部分,它们可以提供高效的数据处理和操作,这篇文章主要为大家介绍了Collections 工具类集合框架中常用算法,感兴趣的可以了解一下
    2023-06-06
  • intellij idea自动生成类注释和方法注释配置方法

    intellij idea自动生成类注释和方法注释配置方法

    这篇文章主要介绍了intellij idea自动生成类注释和方法注释设置方法,需要的朋友可以参考下
    2023-01-01
  • Java 如何调用long的最大值和最小值

    Java 如何调用long的最大值和最小值

    这篇文章主要介绍了Java 如何调用long的最大值和最小值的操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-07-07
  • Springmvc自定义异常处理器实现流程解析

    Springmvc自定义异常处理器实现流程解析

    这篇文章主要介绍了Springmvc自定义异常处理器实现流程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-07-07
  • SpringBoot 错误处理机制与自定义错误处理实现详解

    SpringBoot 错误处理机制与自定义错误处理实现详解

    这篇文章主要介绍了SpringBoot 错误处理机制与自定义错误处理实现详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-11-11
  • java中接口和事件监听器的深入理解

    java中接口和事件监听器的深入理解

    这篇文章主要给大家介绍了关于java中接口和事件监听器的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用java具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-12-12
  • 详解mybatis流式查询与分页插件

    详解mybatis流式查询与分页插件

    这篇文章主要介绍了mybatis流式查询与分页插件,本文通过实例代码给大家讲解的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-11-11
  • drools中query的用法小结

    drools中query的用法小结

    这篇文章主要介绍了drools中query的使用,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-05-05
  • 解决Java导入excel大量数据出现内存溢出的问题

    解决Java导入excel大量数据出现内存溢出的问题

    今天小编就为大家分享一篇解决Java导入excel大量数据出现内存溢出的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-06-06

最新评论