我有一個(非常非常大的)Spring Boot 應用程式。這是一個大型遺留應用程式。假設我有幾十個控制器和路由。
我想做有限的測驗部署。此外,出于許可原因,我想打包和部署 5 個控制器并洗掉其余控制器(不僅僅是禁用,而是洗掉)。
這可以使用一些 Gradle/Spring 魔法嗎?我可以只選擇 5 個控制器作為 jar 的一部分打包,其余 30 個甚至不應該出現在輸出中嗎?我不想為其他控制器提供代碼。
我可以強制每個控制器在不同的包中。所以我可以說我希望包 a、b、c 在 JAR 檔案中......但洗掉 d、e、f。還是其他方式?
uj5u.com熱心網友回復:
來自Spring Boot Gradle 插件參考指南:
BootJar 和 BootWar 任務分別是 Gradle 的 Jar 和 War 任務的子類。因此,打包 jar 或 war 時可用的所有標準配置選項在打包可執行 jar 或 war 時也可用。
基于上述,這應該作業:
bootJar {
excludes = [
'com/acme/controller/NotPaidForController.class',
'com/acme/controller/shoppingcart/*.class',
'com/acme/controller/**/*Delete.class'
// etc.
]
}
bootWar如果它確實有效,那么如果您的舊應用程式是這樣打包的,那么我會假設使用該任務的類似解決方案。
請注意,從 jar/war 中物理排除類可能會導致嚴重的運行時錯誤,即 Spring 在初始化應用程式背景關系時可能仍會查找它們。為了避免這種情況,我建議改用 Spring@Profile或@Conditional組件。使用這些技術,控制器類仍將是部署的一部分,在應用程式背景關系的初始化期間它們不會被視為候選者,正如您所提到的,這可能不是您想要的。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/514512.html
