關於SpringBoot2.0 配置web端口的相關方法

我們平常使用springboot來配置端口都是在application.properties中配置

server.port=8080

這樣的話,我們對於的模塊啓動時候,就是使用8080端口。但是這樣的話,我們在發佈服務的時候,需要在每個模塊都配置一個

application.properties,並且在其中配置好對應的端口。這樣文件的數量還是比較多的,爲了簡化配置文件。我想來嘗試能不能把所有的端口配置都放在同一個文件裏面,每一個模塊都配置一個對應的端口。我們使用如下的代碼來配置對應的端口,還是把端口放在application.properties裏面,直接在tomcat的配置端口的代碼中引用。

package com.zhilink.wms.base.common.config;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.web.server.WebServerFactoryCustomizer;
import org.springframework.boot.web.servlet.server.ConfigurableServletWebServerFactory;
import org.springframework.stereotype.Component;

/**
 * @ClassName TomcatConfig
 * @Date 2019-08-26
 * @Desc TomcatContextCustomizer
 **/
@Component
public class TomcatConfig implements WebServerFactoryCustomizer<ConfigurableServletWebServerFactory> {

    @Value("${server.m1.port}")
    private int customizePort;

    @Override
    public void customize(ConfigurableServletWebServerFactory factory) {
        factory.setPort(customizePort);
    }
}

我們的項目結構是m1作爲父模塊,其他模塊依賴於m1模塊。那麼這樣配置之後,我們的m1模塊是可以成功啓動的,並且我的端口就是我在application.properties裏面配置的端口。可是當我啓動m2模塊的時候就出現問題了。啓動m2的時候,也許要去讀取m1中配置的server.m1.port,這個時候就會出現注入失敗的錯誤了。

那麼改如何解決呢?

有兩種方式,

第一:m1的端口號配置爲固定端口,比如 @Value("${server.port:8083}"),這樣我在其他模塊使用的時候就不會出現注入失敗的錯誤。

第二:在m1中application.properties配置server.m1.port=8080,後續的引用m1的模塊的其他模塊的application.properties文件,都需要加上server.m1.port=8080,這樣也不會出現類似的問題。

但是爲什麼會報這樣的錯誤,我還是不是很清楚。希望有了解相關問題的大神可以解惑。

上述只是個人理解,如有錯誤還請指正!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章