zoukankan      html  css  js  c++  java
  • spring boot 不占用端口方式启动

    随着微服务架构的流行,想要启动一个微服务架构项目就要开启好多端口,有时候一台机器上部署的项目多的时候,端口资源就比较紧张了,其实有的微服务组件仅仅只是提供RPC服务,可以不用占用web启动的端口,此时spring boot 不占用web端口的方式就派上用场了,但是spring boot 1.x与spring boot 2.x的配置是有区别的,在使用时一定要注意一下自己所使用的版本

    spirngboot 2.x之前(代码方式实现):

    1 @SpringBootApplication
    2 public class Application {
    3 
    4 public static void main(String[] args) {
    5      new SpringApplicationBuilder().sources(Application.class).web(false).run(args);
    6   }
    7 }

    spinrboot 2.x之前(另外一种代码实现方式)

    1 @Configuration
    2 @EnableAutoConfiguration
    3 public class MyClass{
    4     public static void main(String[] args) throws JAXBException {
    5           SpringApplication app = new SpringApplication(MyClass.class);
    6           app.setWebEnvironment(false);
    7           ConfigurableApplicationContext ctx = app.run(args);
    8      }
    9 }

    spinrboot 2.x之前(配置方式)

    spring.main.web-environment=false

    springboot 2.x之后(代码方式)

    1 @SpringBootApplication
    2 public class MyApplication {
    3 
    4 public static void main(String[] args) {
    5       new SpringApplicationBuilder(MyApplication.class)
    6              .web(WebApplicationType.NONE) // .REACTIVE, .SERVLET
    7              .run(args);
    8        }
    9 }

    springboot 2.x之后(配置方式)

    spring.main.web-application-type=none
    

      

    不过这里有个点需要注意,如果配置成不占用端口的方式启动,若main方法执行完后,没其他的deamon线程在跑,应用就会自动关闭了,有些新同学最容易放这种错误,并且还不清楚错误在哪;

    在使用阻塞线程时,这里也有个坑,有人使用System.in.read();进行阻塞,这种写法在window环境下是没问题的,但是在linux下会出现不阻塞的情况,具体可参考这篇文章:https://blog.csdn.net/zistrong/article/details/84758138

    推荐写法:

    /**
     * @Description: TODO
     * @Author Mr.huang
     * @Date 2019/10/28 0028
     * @Version V1.0
     **/
    @SpringBootApplication
    @EnableScheduling
    public class GameDataServerApplication implements CommandLineRunner{
        private static final Logger logger = LoggerFactory.getLogger(GameDataServerApplication.class);
        public static void main(String[] args) {
           SpringApplication.run(GameDataServerApplication.class, args);
        }
    
        @Override
        public void run(String... args) throws Exception {
    //这里也可以添加一些业务处理方法,比如一些初始化参数等
    while(true){ try { Thread.sleep(Long.MAX_VALUE); } catch (InterruptedException e) { logger.error("oi进程意外结束",e); } } } }
  • 相关阅读:
    1.5 RPM红帽软件包1.6 Yum软件仓库
    Linux如何查找大文件或目录总结
    1.4 重置root用户密码
    Chrome 红色和 Chromium蓝色 区别:logoChrome 红色和 Chromium蓝色;Chrome闭源和 Chromium开源;
    【Android架构GPS篇】之定位数据怎样从GPS芯片到应用层
    ArcGIS教程:生成特征文件、类和聚类分析
    MiniGUI + Hi3531 笔记 .
    swift手记-2
    java桌面程序中使用联动菜单遇到与解决的问题
    <div+css页面布局课堂笔记>11---页面布局站点首页设计实例__终极版(仿csdn首页)
  • 原文地址:https://www.cnblogs.com/angryprogrammer/p/11757302.html
Copyright © 2011-2022 走看看