欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

springboot實現(xiàn)獲取當前服務器IP及當前項目使用的端口號Port

 更新時間:2023年12月15日 09:47:35   作者:搏·夢  
這篇文章主要介紹了springboot實現(xiàn)獲取當前服務器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值會發(fā)生什么?

@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類

經(jīng)過上面第二點說明,固然大家會選擇使用配置類的方式,畢竟@Value會導致項目啟動不起來,而springboot有又自帶專門存儲server開頭的配置的類ServerProperties,都不用自己創(chuàng)建一個配置類了。

如下測試代碼:

@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(內(nèi)部已幫我們處理了)

代碼:

不在yaml配置 server.pot

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

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

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

最新評論