Spring MVC 使用MVC Java編程進行高級定制

2018-07-26 14:57 更新

從上面許多例子你可以看到,MVC Java編程配置和MVC命名空間的方式都提供了更高抽象層級的應用配置,它不需要你對底下創(chuàng)建的bean有非常深入的了解,相反,這使得你能僅專注于應用需要的配置。不過,有時你可能希望對應用的更精細控制,或你就是單純希望理解底下的配置和機制。

要做到更精細的控制,你要做的第一步就是看看底層都為你創(chuàng)建了哪些bean。若你使用MVC Java編程的方式進行配置,你可以看看java文檔,以及WebMvcConfigurationSupport類的@Bean方法。這個類有的配置都會自動被@EnableWebMvc注解導入。事實上,如果你打開@EnableWebMvc的聲明,你就會看到應用于其上的@Import注解。

精細控制的下一步是選擇一個WebMvcConfigurationSupport創(chuàng)建的bean,定制它的屬性,或你可以提供自己的一個實例。這確保做到以下兩步:移除@EnableWebMvc注解以避免默認配置被自動導入,然后繼承DelegatingWebMvcConfiguration類,它是WebMvcConfigurationSupport的一個子類。以下是一個例子:

@Configuration
public class WebConfig extends DelegatingWebMvcConfiguration {

    @Override
    public void addInterceptors(InterceptorRegistry registry){
        // ...
    }

    @Override
    @Bean
    public RequestMappingHandlerAdapter requestMappingHandlerAdapter() {
        // 自己創(chuàng)建適配器,或者調用super讓基類處理
        // 然后在這里定制bean的一些屬性
    }

}

應用應該只有一個繼承DelegatingWebMvcConfiguration的配置類,或只有一個@EnableWebMvc注解的類,因為它們背后注冊的bean都是相同的。

使用這個方式修改bean的屬性,與這節(jié)前面展示的任何高抽象層級的配置方式并不沖突。WebMvcConfigurerAdapter的子類和WebMvcConfigurer的實現(xiàn)都還是會被使用。


以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號