springboot指定profiles啟動失敗
#平常啟動springboot的jar包,都是透過–spring.profiles.active=dev, 即可讀取application-dev.yml的設定檔的資訊,進行啟動
凡事總有意外
這次啟動就很奇怪了, 輸入這個啟動環境參數, 依然不起效果,
就是這麼驚悚, 就是這麼意外!
沒有讀取application-dev.yml而是讀取預設的application.yml檔案
#但是, 使用jvm的啟動參數: java -jar -Dspring.profiles.active=dev, 可以啟動, 證明dev的設定檔是有效的
比較其他項目
application的入口類別發現:
public static void main(String[] args){ SpringApplication.run(Application.class,args); }
呼叫run方法的時候, 沒有傳入args!
閱讀原始碼發現, 傳入啟動參數, 再解析傳入參數,對properties進行設定
#注意:
細心細心, 啟動程式碼需要傳入啟動參數!!! 方能在啟動時,輸入啟動參數生效
springboot Profiles、設定檔載入優先權
SpringBoot允許我們有多個設定文件,然後在專案啟動時根據條件動態去載入對應的設定檔。
現在有三個配置,一個預設設定檔(application.properties:因為是SpringBoot指定的名字,所以叫預設設定檔),兩個指定環境設定檔(application-prod.properties和application-dev .properties:和對應的環境有關,所以叫它們指定環境設定檔)
application-dev.properties
模擬開發設定資訊
person.name=ZhangSan person.age=18
application-prod.properties
#就模擬生產配置資訊
person.name=LiSi person.age=19
application.properties
就指定一個服務的連接埠號碼和工程在啟動的時候需要載入的設定文件,SpringBoot會自動去匹配application-{spring.profiles.active}.properties,然後就會找到application-dev.properties設定檔
server.port=8080 spring.profiles.active=dev #我们可以指定SpringBoot在启动时加载那个对应的配置文件
事例程式碼
建立了一個事例Person類,讓它被實例化的時候從設定檔讀取訊息,讀取規則:person.{屬性名稱},讓把建立new一個Person的實例,加入到IOC容器中。
建立一個get請求,傳回我們的Person的事例,我們看perosn的屬性值能否根據我們在application.properties設定檔中指定spring.profiles.active的屬性載入對應的設定文件,Person實例中的值是不是預期值
@ConfigurationProperties(prefix = "person") //初始化的时候从配置文件中读取person.{属性名}的信息赋值给当前对象 @Data public class Person { private String name; private Integer age; } @Configuration //配置文件信息,将Person实例注入到IOC容器中 public class MyConfig { @Bean public Person person() { return new Person(); } }
@RestController //建立get請求,傳回我們的Person的事例,我們看perosn的屬性值能否根據我們在application.properties設定檔中指定spring .profiles.active的屬性載入對應的設定文件,Person實例中的值是不是預期值
@RequestMapping("/user") public class PersonController { @Autowired private Person person; @GetMapping public Person getPerson() { return person; } }
工程跑起來,訪問http://localhost:8080/user,回傳結果:
{"name":"ZhangSan","age":18}
把application.properties中的spring.profiles.active的值修改成prod,請求訪問http: //localhost:8080/user,回傳結果:
{"name":"LiSi","age":19}
另外如果我們已經將工程打包成jar,可以在啟動SpringBoot工程的時候,透過命令列給參數賦值的方式指定spring.profiles.active的值
java -jar .\web-02-0.0.1-SNAPSHOT.jar --spring.profiles.active=dev
還有一個比較實用的,就是SpringBoot預設載入application.properties和application.yaml的路徑和優先順序(從SpringBoot官方文件中看到的:https://docs.spring.io/spring-boot/docs/current/reference/html/features.html#features.external-config. application-json),載入的優先權:
-
jar套件所在的目錄下面的/config/{一級子目錄}下面的application.properties和application.yaml
jar套件所在的目錄下面的/config下面的application.properties和application.yaml
jar套件所在的目錄下面的application.properties和application.yaml
classpath下面/config裡面的application.properties和application.yaml
classpath下面的application.properties和application.yaml
場景就是:我們的專案跑了很久了,突發狀況需要修改設定檔。但是以前的舊檔案我們也不敢隨意修改,這時候我們就可以在優先順序高的地方放我們的新的配合文件了。
以上是springboot指定profiles啟動失敗問題如何解決的詳細內容。更多資訊請關注PHP中文網其他相關文章!

Java是平台獨立的,因為其"一次編寫,到處運行"的設計理念,依賴於Java虛擬機(JVM)和字節碼。 1)Java代碼編譯成字節碼,由JVM解釋或即時編譯在本地運行。 2)需要注意庫依賴、性能差異和環境配置。 3)使用標準庫、跨平台測試和版本管理是確保平台獨立性的最佳實踐。

Java'splatFormIndenceIsnotsimple; itinvolvesComplexities.1)jvmcompatiblemustbebeeniblemustbeensuredacrossplatforms.2)Nativelibrariesandsystemcallsneedcarefulhandling.3)

Java'splatformindependencebenefitswebapplicationsbyallowingcodetorunonanysystemwithaJVM,simplifyingdeploymentandscaling.Itenables:1)easydeploymentacrossdifferentservers,2)seamlessscalingacrosscloudplatforms,and3)consistentdevelopmenttodeploymentproce

thejvmistheruntimeenvorment forexecutingjavabytecode,Cocucialforjava的“ WriteOnce,RunanyWhere”能力

JavaremainsatopchoicefordevelopersduetoitsplatFormentence,對象與方向設計,強度,自動化的MememoryManagement和ComprechensivestAndArdArdArdLibrary

Java'splatFormIndependecemeansDeveloperScanWriteCeandeCeandOnanyDeviceWithouTrecompOlding.thisAcachivedThroughThroughTheroughThejavavirtualmachine(JVM),WhaterslatesbyTecodeDecodeOdeIntComenthendions,允許univerniverSaliversalComplatibilityAcrossplatss.allospplats.s.howevss.howev

要設置JVM,需按以下步驟進行:1)下載並安裝JDK,2)設置環境變量,3)驗證安裝,4)設置IDE,5)測試運行程序。設置JVM不僅僅是讓其工作,還包括優化內存分配、垃圾收集、性能調優和錯誤處理,以確保最佳運行效果。

toensurejavaplatFormIntence,lofterTheSeSteps:1)compileAndRunyOpplicationOnmultPlatFormSusiseDifferenToSandjvmversions.2)upureizeci/cdppipipelinelikeinkinslikejenkinsorgithikejenkinsorgithikejenkinsorgithikejenkinsorgithike forautomatecross-plateftestesteftestesting.3)


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具

SAP NetWeaver Server Adapter for Eclipse
將Eclipse與SAP NetWeaver應用伺服器整合。

禪工作室 13.0.1
強大的PHP整合開發環境

WebStorm Mac版
好用的JavaScript開發工具

SublimeText3漢化版
中文版,非常好用