五月天婷亚洲天久久综合网,婷婷丁香五月激情亚洲综合,久久男人精品女人,麻豆91在线播放

  • <center id="8gusu"></center><rt id="8gusu"></rt>
    <menu id="8gusu"><small id="8gusu"></small></menu>
  • <dd id="8gusu"><s id="8gusu"></s></dd>
    樓主: dlmxv90851
    3882 1

    重學(xué)C++重構(gòu)你的C++知識(shí)體系2022升級(jí) [推廣有獎(jiǎng)]

    • 0關(guān)注
    • 0粉絲

    碩士生

    95%

    還不是VIP/貴賓

    -

    威望
    0 級(jí)
    論壇幣
    266 個(gè)
    通用積分
    55.0568
    學(xué)術(shù)水平
    0 點(diǎn)
    熱心指數(shù)
    0 點(diǎn)
    信用等級(jí)
    0 點(diǎn)
    經(jīng)驗(yàn)
    1668 點(diǎn)
    帖子
    98
    精華
    0
    在線時(shí)間
    69 小時(shí)
    注冊(cè)時(shí)間
    2020-4-17
    最后登錄
    2024-9-19

    樓主
    dlmxv90851 發(fā)表于 2022-9-18 00:52:48 |只看作者 |壇友微信交流群|倒序 |AI寫論文

    +2 論壇幣
    k人 參與回答

    經(jīng)管之家送您一份

    應(yīng)屆畢業(yè)生專屬福利!

    求職就業(yè)群
    趙安豆老師微信:zhaoandou666

    經(jīng)管之家聯(lián)合CDA

    送您一個(gè)全額獎(jiǎng)學(xué)金名額~ !

    感謝您參與論壇問題回答

    經(jīng)管之家送您兩個(gè)論壇幣!

    +2 論壇幣
    重學(xué)C++重構(gòu)你的C++知識(shí)體系2022升級(jí)
    5 Spring5源代碼16-@EnableWebMvc注釋原理
    1.需求和運(yùn)用
    一旦我們將九個(gè)自定義組件放入容器,DispatcherServlet就會(huì)初始化,以查看容器中能否有我們本人的組件,因而我們不需求本人的默許組件。我們的許多默許功用都喪失了。
    我們的希冀:

    您本人的組件能夠生效。
    SpringMVC的默許還是管用的。
    能夠運(yùn)用@ enablewemvc+webmvconfiguration。@EnableWebMVC會(huì)導(dǎo)入9個(gè)組件到容器中,並且都有條目【我們能夠用WebMvcConfigurer自定義】,而不是默許運(yùn)用配置文件。

    2.@EnableWebMvc
    @保存(RetentionPolicy。運(yùn)轉(zhuǎn)時(shí)間)
    @Target(ElementType。類型)
    @已記載
    @ Import(delegatingwebmvc configuration . class)
    public @interface EnableWebMvc {
    }
    復(fù)製代碼

    我們發(fā)現(xiàn),實(shí)踐上是經(jīng)過@Import注釋在容器中注冊(cè)了一個(gè)組件delegatingwebmvconfiguration,所以如今的中心是delegatingwebmvconfiguration類做了什麼?

    3.拜托web MVC配置

    兩個(gè)感知接口自動(dòng)將ApplicationContext對(duì)象和ServletContext對(duì)象注入該組件。如今我們要帶著兩個(gè)問題來看看這類源代碼?

    爲(wèi)什麼這個(gè)組件能夠讓自定義配置類生效?
    爲(wèi)此組件定義了哪些默許配置?

    3.1拜托webmvconfiguration源代碼
    DelegatingWebMvcConfiguration類十分簡(jiǎn)單,只要一個(gè)字段配置器,它保管一切的配置類對(duì)象。另外要留意一個(gè)辦法,set configurator(list configurator)辦法,用@Autowired(required = false)注釋,會(huì)自動(dòng)執(zhí)行。
    @ Configuration(proxybean methods = false)
    公共類拜托WebMvcConfiguration擴(kuò)展WebMvcConfigurationSupport {

    //組合形式,組合一切配置類。
    private final WebMvcConfigurerComposite configurers = new WebMvcConfigurerComposite();

    /**
    *此處添加了注釋@Autowired(必填= false)。
    *然前方法將在屬性填充階段執(zhí)行,其中辦法參數(shù)來自容器。
    *會(huì)自動(dòng)沈著器中找到匹配類型的bean,然後反映執(zhí)行辦法。
    */
    @自動(dòng)連線(必需=假)
    公共void匯合配置器(列表配置器){
    假如(!CollectionUtils.isEmpty(配置器)){
    //將容器中的一切WebMvcConfigurer對(duì)象放入WebMvcConfigurerComposite
    this . configurers . addwebmvc configurers(配置器);
    }
    }


    /********************************************************************************/

    /**
    *以下辦法相似。
    *向WebMvcConfigurerComposite的每個(gè)配置類添加配置的詳細(xì)過程參見3.1.1。
    */
    @掩蓋
    受維護(hù)的void配置途徑匹配(途徑匹配配置器配置器){
    this . configurers . configurepathmatch(configurer);
    }

    ...

    /********************************************************************************/

    //此辦法將獲取配置類定義的獨(dú)一考證程序。
    @掩蓋
    @Nullable
    受維護(hù)的考證程序getValidator() {
    返回this . configurers . get validator();
    }

    //此辦法將獲取配置類定義的獨(dú)一MessageCodesResolver。
    @掩蓋
    @Nullable
    受維護(hù)的MessageCodesResolver getMessageCodesResolver(){
    返回this . configurers . getmessagecodesresolver();
    }
    }
    復(fù)製代碼
    能夠看到,在DelegatingWebMvcConfiguration組件的屬性填充階段,會(huì)自動(dòng)找到容器中一切類型爲(wèi)WebMvcConfigurer的bean對(duì)象,然後以它們爲(wèi)參數(shù)調(diào)用set configurators(list configurators)辦法,一切配置類對(duì)象都會(huì)放入WebMvcConfigurerComposite中。
    此外,它還重寫了父類的一些辦法(模板辦法形式)來向配置類注冊(cè)配置,並獲取配置類中的一些配置對(duì)象,如Validator或MessageCodesResolver。
    3.2 WebMvcConfigurerComposite
    下面是這個(gè)類的源代碼,辦法很簡(jiǎn)單,主要留意以下四點(diǎn):

    該類保管一切配置類對(duì)象。
    添加配置時(shí),該配置將注冊(cè)到一切配置類對(duì)象。
    getValidator()辦法只能由一個(gè)配置類重寫,並且只允許一個(gè)配置類返回一個(gè)Validator對(duì)象。
    getMessageCodesResolver()辦法只能由一個(gè)配置類重寫,並且只允許一個(gè)配置類返回MessageCodesResolver對(duì)象。

    WebMvcConfigurerComposite類完成WebMvcConfigurer {

    //持有配置類對(duì)象
    私有最終列表拜托= new ArrayList();


    public void addWebMvcConfigurers(列表配置器){
    假如(!CollectionUtils.isEmpty(配置器)){
    this.delegates.addAll(配置器);
    }
    }


    //添加配置時(shí),該配置將注冊(cè)到一切配置類對(duì)象。
    @掩蓋
    公共void配置途徑匹配(途徑匹配配置器配置器){
    for(webmvcconfigure delegate:this . delegates){
    delegate.configurePathMatch(配置器);
    }
    }

    ...

    /**
    *這種辦法需求留意。
    *考證器必需是獨(dú)一的,也就是說,只允許一個(gè)配置重寫此辦法以返回考證器。
    *假如有多個(gè),將會(huì)引發(fā)異常
    */
    @掩蓋
    公共考證器getValidator() {
    選定的考證程序= null
    for (WebMvcConfigurer配置器:this.delegates) {
    validator validator = configurer . get validator();
    if(考證器!= null) {
    假如(選中!= null) {
    拋出新的IllegalStateException("未找到獨(dú)一的考證程序:{" +
    selected +","+validator+" } ";
    }
    selected =考證器;
    }
    }
    返回所選內(nèi)容;
    }


    /**
    *這個(gè)辦法也需求留意。
    * MessageCodesResolver必需是獨(dú)一的,即,
    *只允許一個(gè)配置重寫此辦法以返回MessageCodesResolver,多個(gè)配置將引發(fā)異常。
    */
    @掩蓋
    @Nullable
    public MessageCodesResolver getMessageCodesResolver(){
    MessageCodesResolver selected = null;
    for (WebMvcConfigurer配置器:this.delegates) {
    MessageCodesResolver MessageCodesResolver = configurer . getmessagecodesresolver();
    if (messageCodesResolver!= null) {
    假如(選中!= null) {
    拋出新的IllegalStateException("未找到獨(dú)一的MessageCodesResolver
    selected +","+messageCodesResolver+" } ";
    }
    selected = messageCodesResolver
    }
    }
    返回所選內(nèi)容;
    }

    }
    復(fù)製代碼

    2022升級(jí)重學(xué)C++重構(gòu)你的C++知識(shí)體系19章

    download:鏈接:https://pan.baidu.com/s/1Ma8wdTcqInLhCvcuUPkGyQ?pwd=5zd6
    提取碼:5zd6
    --來自百度網(wǎng)盤超級(jí)會(huì)員V5的分享
    二維碼

    掃碼加我 拉你入群

    請(qǐng)注明:姓名-公司-職位

    以便審核進(jìn)群資格,未注明則拒絕

    關(guān)鍵詞:知識(shí)體系 Application delegating Collection composite

    沙發(fā)
    lkhoho 發(fā)表于 2023-3-14 13:29:47 |只看作者 |壇友微信交流群
    什么鬼?java都來了

    本版微信群
    加JingGuanBbs
    拉您進(jìn)交流群

    京ICP備16021002-2號(hào) 京B2-20170662號(hào) 京公網(wǎng)安備 11010802022788號(hào) 論壇法律顧問:王進(jìn)律師 知識(shí)產(chǎn)權(quán)保護(hù)聲明   免責(zé)及隱私聲明

    GMT+8, 2024-12-23 03:38