springboot啟動不設定埠
阿新 • • 發佈:2019-07-24
非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