Spring MVC 使用MVC Java編程進(jìn)行高級(jí)定制

2018-07-26 14:57 更新

從上面許多例子你可以看到,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ì)被使用。


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)