spring boot动态端口

在微服务项目中,横向拓展需要启动多个服务,每次启动指定端口号很麻烦,加上以下配置,只需要配置一个端口范围即可实现动态端口。

启动类

@SpringBootApplication
public class CommoditysApplication {

    @Value("${propsocpr}")
    private String propsocpr;

    public static void main(String[] args)     {
        SpringApplication.run(CommoditysApplication.class, args);
    }
    @Bean
    public TomcatServletWebServerFactory servletWebServerFactory(){
        String[] split = propsocpr.split("-");
        for (int i = Integer.parseInt(split[0]); i <= Integer.parseInt(split[1]); i++) {
            try {
                new Socket(InetAddress.getByName("127.0.0.1"),i);
            } catch (IOException e) {
                System.out.println("启动成功,端口===="+i);
                return new TomcatServletWebServerFactory(i);
            }
        }
        System.out.println("范围内端口已耗尽====");
        return null;
    }
}

配置端口范围,可在nacos中动态配置

propsocpr: 5080-5089

你可能感兴趣的:(spring boot动态端口)