W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
從上面許多例子你可以看到,MVC Java編程配置和MVC命名空間的方式都提供了更高抽象層級(jí)的應(yīng)用配置,它不需要你對(duì)底下創(chuàng)建的bean有非常深入的了解,相反,這使得你能僅專注于應(yīng)用需要的配置。不過,有時(shí)你可能希望對(duì)應(yīng)用的更精細(xì)控制,或你就是單純希望理解底下的配置和機(jī)制。
要做到更精細(xì)的控制,你要做的第一步就是看看底層都為你創(chuàng)建了哪些bean。若你使用MVC Java編程的方式進(jìn)行配置,你可以看看java文檔,以及WebMvcConfigurationSupport
類的@Bean
方法。這個(gè)類有的配置都會(huì)自動(dòng)被@EnableWebMvc
注解導(dǎo)入。事實(shí)上,如果你打開@EnableWebMvc
的聲明,你就會(huì)看到應(yīng)用于其上的@Import
注解。
精細(xì)控制的下一步是選擇一個(gè)WebMvcConfigurationSupport
創(chuàng)建的bean,定制它的屬性,或你可以提供自己的一個(gè)實(shí)例。這確保做到以下兩步:移除@EnableWebMvc
注解以避免默認(rèn)配置被自動(dòng)導(dǎo)入,然后繼承DelegatingWebMvcConfiguration
類,它是WebMvcConfigurationSupport
的一個(gè)子類。以下是一個(gè)例子:
@Configuration
public class WebConfig extends DelegatingWebMvcConfiguration {
@Override
public void addInterceptors(InterceptorRegistry registry){
// ...
}
@Override
@Bean
public RequestMappingHandlerAdapter requestMappingHandlerAdapter() {
// 自己創(chuàng)建適配器,或者調(diào)用super讓基類處理
// 然后在這里定制bean的一些屬性
}
}
應(yīng)用應(yīng)該只有一個(gè)繼承
DelegatingWebMvcConfiguration
的配置類,或只有一個(gè)@EnableWebMvc
注解的類,因?yàn)樗鼈儽澈笞?cè)的bean都是相同的。使用這個(gè)方式修改bean的屬性,與這節(jié)前面展示的任何高抽象層級(jí)的配置方式并不沖突。
WebMvcConfigurerAdapter
的子類和WebMvcConfigurer
的實(shí)現(xiàn)都還是會(huì)被使用。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: