【SpringBoot 2】(十二) profile功能 自定義starter

寫在前面在這里插入圖片描述🛫更多知識總結見SpringBoot 2專欄
🚕本篇知識點總結自尚硅谷雷神的視頻
🚒博主對于該知識尚在學習階段
🚄如果發現存在問題請毫不吝嗇的指出
🚀🚀扎哇太棗糕的博客首頁🚀🚀

文章目錄

  • 1 profile功能
    • 1.1 profile的生效規則
    • 1.2 外部配置源
  • 2 自定義starter

1 profile功能

1.1 profile的生效規則

為了方便多環境適配,SpringBoot簡化了profile功能,具體的使用規則如下:
??在resources文件夾下可以一次創建多個application-xxx.yaml配置文件,分別對應著不同的生產、測試等環境,但是只有命名為application.yaml(或者后綴.properties的文件)文件會默認加載,所以說其他環境的配置文件中的配置信息都不會生效。在這里插入圖片描述??如果是想切換配置文件環境的話,就可以在默認配置文件中配置

spring:profiles:active: test

在這里插入圖片描述??當不同配置文件的配置項產生沖突的時候,首先若是其他環境都沒有激活的話使用默認配置文件的配置,若是在默認配置文件中激活了其他環境的配置就按激活的配置在這里插入圖片描述??使用命令行運行jar包期間可以不用重新修改配置文件再次打包,可以通過命令行參數配置進行修改激活的環境。首先需要對項目進行打包并打開jar包的存儲位置在這里插入圖片描述進入dos窗口輸入命令修改環境并運行jar包在這里插入圖片描述

java -jar test-profile-0.0.1-SNAPSHOT.jar --spring.profiles.active=test

在這里插入圖片描述
??我們該可以使用@Profile(“xxx”)注解標注在類、方法或參數綁定上,表示在指定環境下才會執行該類、方法或者進行配置文件與POJO類的綁定在這里插入圖片描述

1.2 外部配置源

??常用可以作為外部配置源的有:Java屬性文件、YAML文件、環境變量、命令行參數。其中配置文件的默認掃描位置也不只單單一個,以下五個位置都能被SpringBoot默認掃到,加載順序由高到低但是優先級相反(也就是說配置項相同的時候后面的可以覆蓋前面的):(1) classpath 根路徑(2) classpath 根路徑下config目錄(3) 項目jar包同層級(4) 項目jar包同層級的config目錄(5) config目錄的直接子目錄

2 自定義starter

??SpringBoot的starter場景啟動器想必大家都不陌生,在SpringBoot開發的時候不管進行什么開發只要用到哪種技術第一都是引入它的starter場景啟動器,接下來讓我們根據SpringBoot中的源碼自定義一個場景啟動器。
??第一步: 使用Spring Initializr創建一個SpringBoot項目作為autoconfiguration,構建項目目錄如下:在這里插入圖片描述

封裝自定義starter業務的HelloService

/*** @author : mereign* @date : 2022/3/12 - 20:55* @desc : service組件,內部定義了方法*/
public class HelloService {@AutowiredHelloProperties helloProperties;public String sayHello(String userName) {return helloProperties.getPrefix() + ":" + userName + "》" + helloProperties.getSuffix();}
}

封裝配置文件屬性的HelloProperties

/*** @author : mereign* @date : 2022/3/12 - 20:57* @desc :  配置文件的屬性封裝,默認自動導入容器中*/
@ConfigurationProperties("com.xiaochen")
public class HelloProperties {private String prefix;private String suffix;public String getPrefix() {return prefix;}public void setPrefix(String prefix) {this.prefix = prefix;}public String getSuffix() {return suffix;}public void setSuffix(String suffix) {this.suffix = suffix;}
}

決定是否注冊組件的自動配置類HelloServiceAutoConfiguration

/*** @author : mereign* @date : 2022/3/12 - 21:04* @desc : 一個自動配置類,決定是否向容器中注冊service組件,以及配置文件綁定*/// 表明這是一個配置類
@Configuration
// 配置文件綁定
@EnableConfigurationProperties(HelloProperties.class)
public class HelloServiceAutoConfiguration {// 如果容器中沒有這個組件就是用下面的方法進行容器的helloService組件注入,如果有的話就用容器中的@ConditionalOnMissingBean(HelloService.class)// 容器注入組件@Beanpublic HelloService helloService() {HelloService helloService = new HelloService();return helloService;}
}

resources文件夾下創建MATE-INF目錄下spring.factories文件,這樣才能加載到指定的自動配置類

# Auto Configure
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
com.xiaochen.auto.HelloServiceAutoConfiguration

??第二步: 創建一個maven項目作為自定義starter,只需要在它的pom文件中導入autoconfiguration的項目依賴

<dependencies><dependency><groupId>com.xiaochen</groupId><artifactId>test-autoconfigure</artifactId><version>0.0.1-SNAPSHOT</version></dependency>
</dependencies>

??第三步: 分別對兩個項目模塊在生命周期中選擇clean和install,將兩個模塊打成jar包
??第四步: 創建測試項目,目錄結構如下在這里插入圖片描述
pom文件中導入自定義的starter

<dependency><groupId>com.xiaochen</groupId><artifactId>test-starter</artifactId><version>1.0-SNAPSHOT</version>
</dependency>

創建一個測試使用的controller

@RestController
public class HelloController {@AutowiredHelloService helloService;@GetMapping("/hel")public String sayHello() {return helloService.sayHello("張三");}
}

配置測試項目的配置文件

com.xiaochen.prefix=jaka
com.xiaochen.suffix=hafd

啟動測試項目訪問controller的請求映射
在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/535085.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/535085.shtml
英文地址,請注明出處:http://en.pswp.cn/news/535085.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

jpa transaction 回滾_我遇到的JPA中事務回滾的問題

在最近的項目中&#xff0c;做的是解析XML文件&#xff0c;解析過程中會有異常&#xff0c;比如&#xff1a;XML文件中節點的數據和與之對應的數據庫的字段中數據的類型不匹配&#xff1b;XML中數據長度超過數據庫定義的長度&#xff1b;有數據了的重復插入問題&#xff1b;讀取…

pb 怎么判斷是 小數_考試90分以上的孩子是怎么學數學的?聽聽老師怎么說?

一二年級&#xff0c;考試上九十分很輕松。但是&#xff0c;不少小朋友一上三年級&#xff0c;成績就落下來了。那么&#xff0c;我們來看看三年級起&#xff0c;考試還能夠保持在90分以上的孩子是怎么學習數學的吧&#xff01;第一&#xff0c;計算能力過關通過這兩張圖片的對…

快速上手Mybatis-Plus 入門案例

寫在前面&#x1f6eb;更多知識總結見Mybatis-Plus專欄 &#x1f695;內容總結自尚硅谷楊博超老師的視頻 &#x1f692;博主對于該知識尚在學習階段 &#x1f684;如果發現存在問題請毫不吝嗇的指出 &#x1f680;&#x1f680;扎哇太棗糕的博客首頁&#x1f680;&#x1f680;…

交換機分布緩存_網絡交換機緩存在數據中心的作用

什么產生了緩存&#xff1f;網絡交換機要配置多少緩存才夠用&#xff1f;緩存容量是否有標準可以衡量&#xff1f; 當網絡交換機接口收到超出其所能處理的流量后&#xff0c;它會選擇要么將其緩存&#xff0c;或者將其丟棄。 緩存通常都是因為網絡接口速率不同造成的&#xff0…

黑蘋果 選擇語言 點不了_什么是天然的“黑鉆”?—科普貼

天然黑鉆也被成為“碳酸氫”&#xff0c;具有與白鉆相同的化學成分&#xff0c;然而黑鉆石的晶體結構是不同的&#xff0c;這意味著它們由許多小晶體組成&#xff0c;它們以隨機的形式粘在一起&#xff0c;而不是一個具有可識別自然線的固體錐形。天然黑鉆石有極高的含物&#…

sim卡沒壞但蘋果手機無服務_解決手機插SIM卡后都顯示“無SIM卡”的故障問題

故障現象顧客描述手機插SIM卡后都顯示“無SIM卡”。維修過程引起插入SIM卡卻顯示“無SIM卡”的故障&#xff0c;除了可能是SIM卡座的供電、時鐘、復位及SIM卡插入檢測信號不正常導致外&#xff0c;還有可能是基帶不正常導致的。插上手機卡&#xff0c;左上角提示“無SIM卡”&am…

Mybatis-Plus實現簡單的增刪改查 實體類上的注解

寫在前面&#x1f6eb;更多知識總結見Mybatis-Plus專欄 &#x1f695;內容總結自尚硅谷楊博超老師的視頻 &#x1f692;博主對于該知識尚在學習階段 &#x1f684;如果發現存在問題請毫不吝嗇的指出 &#x1f680;&#x1f680;扎哇太棗糕的博客首頁&#x1f680;&#x1f680;…

webpack 讀取文件夾下的文件_webpack基本介紹及使用

1.什么是webpackwebpack是一個前端資源加載/打包工具。它根據模塊的依賴關系進行靜態分析&#xff0c;然后將這些模塊按照指定的規則生成對應的靜態資源。從上圖看出&#xff0c;webpack可以將多種靜態資源js&#xff0c;css&#xff0c;less轉換成一個靜態文件&#xff0c;減少…

conda失敗說沒有寫權限_愛情中,為什么男生表白失敗,女生還說可以繼續做朋友,想過沒有...

在愛情中&#xff0c;不是每個男生都是幸運的&#xff0c;也不是每次的表白都是如你所愿的。有成功總有失敗&#xff0c;成功是喜悅的&#xff0c;但是失敗卻是痛苦的。不過有的時候男生和女生表白以后&#xff0c;女生對男生說了這樣的一段&#xff0c;其實我希望以后我們還是…

Mybatis-Plus中Wrapper條件構造器的使用

寫在前面 &#x1f6eb;更多知識總結見Mybatis-Plus專欄 &#x1f695;內容總結自尚硅谷楊博超老師的視頻 &#x1f692;博主對于該知識尚在學習階段 &#x1f684;如果發現存在問題請毫不吝嗇的指出 &#x1f680;&#x1f680;扎哇太棗糕的博客首頁&#x1f680;&#x1f680…

springboot設置默認值_線上Bug無法復現?老司機教你一招,SpringBoot遠程調試不用愁!...

前言在部署線上項目時&#xff0c;相信大家都會遇到一個問題&#xff0c;線上的 Bug 但是在本地不會復現&#xff0c;多么無奈。此時最常用的就是取到前端傳遞的數據用接口測試工具測試&#xff0c;比如 POSTMAN&#xff0c;復雜不&#xff0c;難受不&#xff1f;今天陳某教你一…

Mybatis-Plus的分頁 樂觀鎖插件 通用枚舉 多數據源

寫在前面&#x1f6eb;更多知識總結見Mybatis-Plus專欄 &#x1f695;內容總結自尚硅谷楊博超老師的視頻 &#x1f692;博主對于該知識尚在學習階段 &#x1f684;如果發現存在問題請毫不吝嗇的指出 &#x1f680;&#x1f680;扎哇太棗糕的博客首頁&#x1f680;&#x1f680;…

學python哪個網站好-有哪些值得推薦的Python學習網站|

現在那個網站可以學習python爬蟲&#xff1f; 為大家分享Python學習經驗: 1、尋找一本Python書籍&#xff0c;要求淺顯易懂、全面細致程較好&#xff0c;專注于這一本&#xff0c;從頭開始研究&#xff0c;把整本書掌握透徹。 2、找一個項目練手&#xff0c;熟悉基礎后&#xf…

等待的操作過時_不會過時的6種網站seo優化操作

SEO優化一直在變化&#xff0c;百度和谷歌的算法也在不斷的迭代更新&#xff0c;所以競爭永遠不會停止。今天小編就來給大家分享一下&#xff0c;6種不會過時的網站seo優化操作。1.保持正常優化為網站訪客提供高質量的內容、卓越的用戶體驗和安全性以及卓越的技術網站。這可能需…

java的for循環取出數據只是拿到最后一個_一問SQL優化就無從藏身?那只是你對原理的精髓掌握不深

?曾幾何時&#xff0c;我信誓旦旦的認為只要 SQL 寫的好&#xff0c;面試過程永不倒。結果在一次又一次的征途中&#xff0c;「最終還是以完敗落下帷幕」。結果都源于注重使用而忽略原理&#xff0c;從而不知也不了解「SQL」優化應如何面對。讀文的你&#xff0c;如今可有這樣…

SpringBoot前后端分離解決跨域問題的三種解決方案

&#x1f680;&#x1f680;扎哇太棗糕的博客首頁&#x1f680;&#x1f680;** 文章目錄&#x1f34a;什么是跨域&#x1f34a;跨域問題的解決策略&#x1f34a;三種解決方法&#x1f34a;什么是跨域 想要知道什么是跨域的話&#xff0c;我們可以通過一個小案例簡單了解一下跨…

ant design vue 樹形控件_官宣!vue.ant.design 低調上線

點擊右上方&#xff0c;關注開源中國OSC頭條號&#xff0c;獲取最新技術資訊官宣&#xff01;官宣&#xff01;官宣&#xff01;是的&#xff0c;你沒看錯就是那個 https://vue.ant.design。至此&#xff0c;Ant Design 已經全面覆蓋了 React、Angular、Vue 三大前端框架&#…

哪款筆記本電腦好_掃地機器人哪個牌子好?口碑最好的掃地機器人

隨著智能家居的普及&#xff0c;讓我們的生活變得越來越智能。掃地機器人的出現完美解決了寵物的毛發問題&#xff0c;為自己騰出了大量的時間。掃地機器人絕對能提升你的生活品質&#xff0c;通過機器內建的智能清潔模式、自定義規劃區域進行打掃&#xff0c;使用手機APP進行控…

使用mybatisplus的通用枚舉實現存儲顯示相分離

狡兔尚且三窟&#xff0c;多學一招總沒錯吧&#xff1f; &#x1f680;&#x1f680;扎哇太棗糕的博客首頁&#x1f680;&#x1f680; &#x1f30f; 拋出問題 如果讓你實現這么一個功能&#xff1a;將性別使用數字存儲到數據庫中&#xff0c;但是前端需要獲取到的是具體的性…

wifi卡慢延遲高_家里WiFi特別卡,網絡延遲高,可能不是網速的問題

原標題&#xff1a;家里WiFi特別卡&#xff0c;網絡延遲高&#xff0c;可能不是網速的問題隨著科技走向我們的身邊&#xff0c;網絡的覆蓋力度也是越來越大&#xff0c;相信很多人的家中都是有安裝WiFi的&#xff0c;然后往往在家中使用的過程中都會碰到這樣的情況&#xff0c;…