日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

詳解Spring的autowire-candidate設計

瀏覽:71日期:2023-07-07 17:46:35
目錄Xml配置文件中的default-autowire-candidates屬性匹配邏輯算法PatternMatchUtils.simpleMatch總結Xml配置文件中的default-autowire-candidates屬性

有的同學對這個配置可能不熟悉或者說都不知道這個配置的存在,那首先我們看下default-autowire-candidates這個配置是放在何處的:

<beans xmlns='http://www.springframework.org/schema/beans' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:context='http://www.springframework.org/schema/context' xmlns:aop='http://www.springframework.org/schema/aop' xsi:schemaLocation='http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd default-autowire-candidates='service*'> <bean autowire-candidate='false'/> <bean /> <bean autowire='byType' /></beans>

在idea中我們可以點開 default-autowire-candidates這個屬性所在的spring-beans.xsd就能看到官方對這個屬性的注釋:

A default bean name pattern for identifying autowire candidates: e.g. 'Service', 'data', 'Service', 'dataService'. Also accepts a comma-separated list of patterns: e.g. 'Service,*Dao'. See the documentation for the ’autowire-candidate’ attribute of the ’bean’ element for the semantic details of autowire candidate beans.

簡單翻譯下也就是說這個屬性可以標示配置文件中的所有Bean默認能否成為自動注入候選者的名稱匹配模式,比如 'Service', 'data', 'Service', 'dataService'.也支持以逗號分隔的字符串模式列表:'Service,Dao'. 比如上面配置文件中配置的service就匹配了serviceA,serviceB兩個Bean.但是Spring的設計規定serviceA自身配置的autowire-candidate為false會覆蓋default-autowire-candidates配置,所以serviceA是不會成為自動注入的候選者。

匹配邏輯算法

我們深入到源碼中看下Spring是如何根據這個匹配模式來與自身bean名稱來匹配的

String autowireCandidate = ele.getAttribute(AUTOWIRE_CANDIDATE_ATTRIBUTE);if (''.equals(autowireCandidate) || DEFAULT_VALUE.equals(autowireCandidate)) { String candidatePattern = this.defaults.getAutowireCandidates(); if (candidatePattern != null) { String[] patterns = StringUtils.commaDelimitedListToStringArray(candidatePattern); bd.setAutowireCandidate(PatternMatchUtils.simpleMatch(patterns, beanName)); }}else { bd.setAutowireCandidate(TRUE_VALUE.equals(autowireCandidate));}

很清楚,在bean本身配置autowire-candidate為空或者默認的情況下,Spring會把default-autowire-candidates字符串轉換成數組,然后依賴PatternMatchUtils類的simpleMatch方法來驗證當前bean的名稱是否匹配,成功與否都會賦值給當前bean的autowireCandidate屬性。其實最主要的還是PatternMatchUtils.simpleMatch方法

PatternMatchUtils.simpleMatch

public static boolean simpleMatch(@Nullable String pattern, @Nullable String str) { //pattern 匹配模式為空 或者待匹配字符串為空就返回false if (pattern == null || str == null) { return false; } //找到第一個* 在匹配模式字符串中的的索引 int firstIndex = pattern.indexOf(’*’); if (firstIndex == -1) { //索引為空的情況下就代表 模式字符串要和待匹配字符串相等。 return pattern.equals(str); } //*在第一位 if (firstIndex == 0) { //*在第一位 且匹配模式字符串長度為1 那就直接返回true ,比如 * if (pattern.length() == 1) { return true; } //找到下一個*的起始位置 int nextIndex = pattern.indexOf(’*’, firstIndex + 1); if (nextIndex == -1) { //如果沒有*了,就判斷 待匹配的字符串是否是以pattern結尾的。 //比如*service Aservice就滿足這種情況 return str.endsWith(pattern.substring(1)); } //截取第一個* 和之后一個* 之間的字符串 String part = pattern.substring(1, nextIndex); if (part.isEmpty()) { return simpleMatch(pattern.substring(nextIndex), str); } //str 是指待匹配的字符 int partIndex = str.indexOf(part); while (partIndex != -1) { if (simpleMatch(pattern.substring(nextIndex), str.substring(partIndex + part.length()))) { return true; } //從partIndex+1 開始計算part的索引 partIndex = str.indexOf(part, partIndex + 1); } return false; } //待匹配字符串的長度比 第一個*的索引 大或者相等的情況下 //截取模式字符串 0 到 第一個*號之間的字符串 ,截取 待匹配字符串 0 到 第一個*號之間的字符串 對比 //如果相等 ,再截取 模式字符串 第一個*號之后的字符串 和 待匹配 字符串 第一個*號之后的字符串 去做匹配 return (str.length() >= firstIndex && pattern.substring(0, firstIndex).equals(str.substring(0, firstIndex)) && simpleMatch(pattern.substring(firstIndex), str.substring(firstIndex)));}

這個Utils類的工具函數實現的字符串模糊匹配算法在我們日常開發中對字符串的操作方面也會有或多或少的幫助。

總結

Spring中的很多設計細節總是給我們很多驚喜,從中我們也可以很多小技巧,給我們日常開發會帶來不少啟發。

以上就是詳解Spring的autowire-candidate設計的詳細內容,更多關于Spring的autowire-candidate設計的資料請關注好吧啦網其它相關文章!

標簽: Spring
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
少妇精品久久久一区二区| 亚洲免费网址| 日本一区二区免费高清| 国产一区二区三区探花| 九色porny丨国产首页在线| 精品一区欧美| 亚洲精品欧洲| 欧美国产亚洲精品| 肉色欧美久久久久久久免费看| 五月天激情综合网| 日本成人中文字幕| 色婷婷色综合| 首页亚洲欧美制服丝腿| 国产精品欧美在线观看| 久久国产毛片| 日本欧美韩国一区三区| 色88888久久久久久影院| 日韩在线黄色| 日本免费一区二区三区四区| 蜜桃视频在线观看一区| 欧美精品97| 免费国产自久久久久三四区久久 | 国产欧美日韩精品一区二区三区| 色婷婷综合网| 亚洲毛片网站| 激情中国色综合| 亚洲成人二区| 一区二区高清| 国产一区二区精品福利地址| 亚洲精品成人| 麻豆久久久久久| 深夜视频一区二区| 欧美亚洲国产日韩| 免费国产自久久久久三四区久久 | 中文字幕在线免费观看视频| 欧美性感美女一区二区 | 成人av二区| 欧美aaaaaa午夜精品| 国产农村妇女精品一二区| 麻豆视频久久| 一本色道久久精品| 精品国产三区在线| 日韩二区在线观看| 黑丝一区二区三区| 日韩欧美二区| 天堂成人国产精品一区| 欧美黑人做爰爽爽爽| 亚洲欧美网站| 日韩欧美一区二区三区免费看| 日本在线成人| 九色精品91| 超级白嫩亚洲国产第一| 欧美视频精品全部免费观看| 在线国产一区| 精品国产网站| 欧美另类中文字幕| 中文一区在线| 97国产成人高清在线观看| 国产午夜一区| 日本中文字幕视频一区| 美女91精品| av成人国产| 久久精品高清| 日韩免费视频| 97在线精品| 成人在线免费观看网站| 国产精品自在| 欧美三级第一页| 日韩在线黄色| 美美哒免费高清在线观看视频一区二区| 久久天堂精品| 日韩欧美少妇| 久久久精品日韩| 欧美成人精品三级网站| 福利在线免费视频| 欧美 日韩 国产精品免费观看| 伊人久久亚洲美女图片| 色婷婷综合网| 麻豆中文一区二区| 久久精品 人人爱| 天堂俺去俺来也www久久婷婷| 午夜国产精品视频免费体验区| 久久三级视频| 香蕉久久99| 国产 日韩 欧美一区| 中文在线中文资源| 久久久久久网| 日本蜜桃在线观看视频| av中文字幕在线观看第一页| 国产a亚洲精品| 亚洲黄色网址| 日韩专区精品| 久久精品二区三区| 欧美日韩国产在线观看网站| 狠狠干成人综合网| 老牛影视一区二区三区| 亚洲毛片一区| 欧美日韩1区| 美女久久精品| 精品久久久网| 日本在线高清| 国户精品久久久久久久久久久不卡| 欧美日韩一二三四| 欧美特黄一区| 中文字幕一区二区av| 日韩综合小视频| 欧美亚洲福利| 国产一区二区三区四区大秀 | 精品91福利视频| 98精品视频| 亚洲香蕉网站| 蜜臀91精品一区二区三区| 日本成人在线网站| 国产精品极品国产中出| 麻豆精品蜜桃视频网站| 超碰成人av| 亚洲精品2区| 日韩中出av| 欧美精品不卡| 亚洲国内精品| 日本不卡一二三区黄网| 久久中文字幕一区二区| 日韩高清中文字幕一区二区| 99视频精品| 91精品国产经典在线观看| 国产suv精品一区二区四区视频 | 自拍日韩欧美| 日本在线视频一区二区| 国产精品对白久久久久粗| 国产精品蜜芽在线观看| 亚洲精品午夜av福利久久蜜桃| 视频一区中文字幕国产| 韩国三级一区| 亚洲区国产区| 久久99精品久久久野外观看| 久久久久久久久久久妇女| 中文字幕免费精品| 欧美91在线|欧美| 亚洲二区精品| 日韩福利视频导航| 久久久久网站| 日本天堂一区| 亚洲v在线看| 欧美一级二级三级视频| 91精品韩国| 日本成人中文字幕在线视频| 激情黄产视频在线免费观看| 亚洲一区亚洲| 老司机免费视频一区二区| 91久久久精品国产| 国产精品magnet| 欧美网站在线| 六月丁香综合在线视频| 红桃视频亚洲| 欧美黑人做爰爽爽爽| 九九综合在线| 国产精品亚洲二区| 欧美.日韩.国产.一区.二区| 日韩av影院| 在线日韩中文| 国产精品视频一区二区三区| 亚洲国产一区二区在线观看 | 欧美成人基地 | www.com.cn成人| 亚州av日韩av| 国产情侣久久| 亚洲精品一区二区在线看| 你懂的亚洲视频| 丝袜a∨在线一区二区三区不卡| 国精品产品一区| 日韩一区二区三区精品| 欧美影院三区| 久久精品一本| 天堂久久av| 不卡中文字幕| 国内精品美女在线观看| 日韩精品国产精品| 影音国产精品| 天堂中文av在线资源库| 久久国内精品自在自线400部| 亚洲国产一区二区在线观看| 成人午夜亚洲| 国产精品一国产精品| 蜜桃视频免费观看一区| 国内精品福利| 在线中文字幕播放| 欧美成人精品午夜一区二区| 蜜臀精品久久久久久蜜臀 | 首页国产欧美日韩丝袜| 女生影院久久| 精品一区二区男人吃奶| 少妇高潮一区二区三区99| 偷拍欧美精品| 欧美香蕉视频| 日韩成人精品一区二区| 国产精品一区高清| 日韩区欧美区| 亚洲一区二区三区在线免费| 欧美日韩激情| 999国产精品999久久久久久|