当前位置: 首页 > news >正文

springboot不占用端口启动

非web工程

在服务架构中,有些springboot工程只是简单的作为服务,并不提供web服务

这个时候不需要依赖

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>

但是启动springboot的话,启动之后就会自动关闭,可以通过如下方式解决

实现CommandLineRunner,重写run方法即可,这样启动后就不会关闭

@SpringBootApplication
@EnableDubbo
public class SeaProviderLogApplication implements CommandLineRunner {

    public static void main(String[] args) {
        SpringApplication.run(SeaProviderLogApplication.class, args);
    }

    @Override
    public void run(String... args) throws Exception {
        System.out.println("SeaProviderLogApplication正在启动。。。");
        while(true) {
            Thread.sleep(600000000);
            System.out.println("sleep....");
        }
    }
}

有人可能会说,引入spring-boot-starter-web主要是为了方便测试,其实完全可以使用单元测试进行操作

使用@SpringBootTest@RunWith(SpringRunner.class)注解即可进行单元测试代码如下

@SpringBootTest
@RunWith(SpringRunner.class)
public class IndexControllerTest {

    @Reference(version = "1.0.1")
    private ErrorLogService errorLogService;

    @Test
    public void bbb() {
        ErrorLog errorLog = new ErrorLog();
        errorLog.setName("error");
        System.out.println(errorLogService.sendMsg(errorLog));
    }
}

web工程

 但是有时候由于maven聚合工程,会依赖common或者parent,会自然的引入了

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>

 这个时候启动的话,默认端口是8080,当然是可以在application.properties中配置

server.port=8081 来进行修改,但是比较麻烦,因为本就不暴露http请求,没必要添加spring-boot-starter-web依赖,服务多的话也端口设置也让人头疼,会产生端口占用问题

由于不提供web服务,属实没必要暴露端口,可以通过如下两种方式进行启动不设置端口号

第一种:

修改application配置文件

spring:
  main:
    allow-bean-definition-overriding: true
    web-application-type: none

 第二种:

修改启动入口

    public static void main(String[] args) {
        new SpringApplicationBuilder(Application .class)
                .web(WebApplicationType.NONE) // .REACTIVE, .SERVLET
                .run(args);
    }

OK,完美解决,再也不用考虑端口分配问题了

springboot整合dubbo可以参考 springboot2.x纯注解整合dubbo

 

转载于:https://www.cnblogs.com/chywx/p/11234527.html

相关文章:

  • C语言标准中的逻辑位移和算术位移
  • 本体感受和演讲能力
  • 设计模式:动态代理
  • eDocEngine_3.0.4.273的手动安装
  • TensorFlow(2)- 建立一个简单的神经网络
  • 智能营销笔记本有用吗?
  • 什么是算法
  • Research Articles For Language Learning
  • 聪明的程序员用Delphi,真正的程序员用C++,偷懒的程序员用PowerShell
  • 第七章 管理类型(In .net4.5) 之 使用类型
  • 插入数据进入已排好序的数组
  • Oracle 时间戳与日期的转换
  • vs2008 linq2sql继续挖掘bug:表达式列支持问题
  • Delphi XE2 compiler performance
  • 一些值得深思的话
  • Gradle 5.0 正式版发布
  • JAVA_NIO系列——Channel和Buffer详解
  • js数组之filter
  • PAT A1050
  • 包装类对象
  • 不用申请服务号就可以开发微信支付/支付宝/QQ钱包支付!附:直接可用的代码+demo...
  • 创建一种深思熟虑的文化
  • 关于 Linux 进程的 UID、EUID、GID 和 EGID
  • 将回调地狱按在地上摩擦的Promise
  • 力扣(LeetCode)56
  • 买一台 iPhone X,还是创建一家未来的独角兽?
  • 面试题:给你个id,去拿到name,多叉树遍历
  • 盘点那些不知名却常用的 Git 操作
  • 悄悄地说一个bug
  • 适配iPhoneX、iPhoneXs、iPhoneXs Max、iPhoneXr 屏幕尺寸及安全区域
  • 云栖大讲堂Java基础入门(三)- 阿里巴巴Java开发手册介绍
  • 再次简单明了总结flex布局,一看就懂...
  • [Shell 脚本] 备份网站文件至OSS服务(纯shell脚本无sdk) ...
  • raise 与 raise ... from 的区别
  • #免费 苹果M系芯片Macbook电脑MacOS使用Bash脚本写入(读写)NTFS硬盘教程
  • (17)Hive ——MR任务的map与reduce个数由什么决定?
  • (4.10~4.16)
  • (大众金融)SQL server面试题(1)-总销售量最少的3个型号的车及其总销售量
  • (附源码)ssm高校社团管理系统 毕业设计 234162
  • (论文阅读23/100)Hierarchical Convolutional Features for Visual Tracking
  • (入门自用)--C++--抽象类--多态原理--虚表--1020
  • (三)docker:Dockerfile构建容器运行jar包
  • (太强大了) - Linux 性能监控、测试、优化工具
  • (转)linux 命令大全
  • (转载)Google Chrome调试JS
  • (转载)OpenStack Hacker养成指南
  • (转载)虚幻引擎3--【UnrealScript教程】章节一:20.location和rotation
  • .net core 6 redis操作类
  • .net 验证控件和javaScript的冲突问题
  • .Net 转战 Android 4.4 日常笔记(4)--按钮事件和国际化
  • .net(C#)中String.Format如何使用
  • .NET/C# 使用反射调用含 ref 或 out 参数的方法
  • .NET上SQLite的连接
  • .NET正则基础之——正则委托
  • /bin/bash^M: bad interpreter: No such file or directory