前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >springboot不占用端口启动

springboot不占用端口启动

作者头像
陈灬大灬海
发布2019-07-26 15:45:41
2K0
发布2019-07-26 15:45:41
举报
文章被收录于专栏:面朝大海春暖花开

非web工程

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

这个时候不需要依赖

代码语言:javascript
复制
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

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

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

代码语言:javascript
复制
@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)注解即可进行单元测试代码如下

代码语言:javascript
复制
@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,会自然的引入了

代码语言:javascript
复制
<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配置文件

代码语言:javascript
复制
spring:
  main:
    allow-bean-definition-overriding: true
    web-application-type: none

 第二种:

修改启动入口

代码语言:javascript
复制
    public static void main(String[] args) {
        new SpringApplicationBuilder(Application .class)
                .web(WebApplicationType.NONE) // .REACTIVE, .SERVLET
                .run(args);
    }

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

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-07-24 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 非web工程
  • web工程
    • 第一种:
      •  第二种:
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档