1. 程式人生 > >springboot啟動不設定埠

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

&n