Spring MVC設定?Spring BootのSpring MVC設定?



この文章の目的は?


前述したように、DispatcherServiceletはカスタマイズできます.設置方法はいろいろありますが、授業で説明する方法をまとめてみましょう.

直接空の登録


最も原始的な方法は、空を直接登録することです.
@Configuration
@ComponentScan
public class WebConfig {
	
    @Bean
    public HandlerMapping handlerMapping() {
    	RequestMappingHandlerMapping handlerMapping = new RequestMappingHandlerMapping();
        handlerMapping.setOrder(Ordered.HIGHTEST_PRECEDENCE);
        return handlerMapping;
    }
    
    @Bean
    public HandlerAdapter handlerAdapter() {
    	RequestMappingHandlerAdapter handlerAdapter = new RequestMappingHandlerAdapter();
        // handlerAdapter.setArgumentResolvers();
		// handlerAdapter.setMessageConverters();
		// handlerAdapter.setReturnValueHandlers();
        return handlerAdapter;
    }
    
    @Bean
    public ViewResolver viewResolver() {
    	InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
        viewResolver.setPrefix("/WEB-INF/");
        viewResolver.setSuffix(".jsp");
        return viewResolver;
    }

}

@EnableWebMVC


直接登録が面倒な場合は、@EnableWebMvc言語テストで簡単に構成できます.
次に、説明のコードに従って、DispatcherServiceletのデフォルト値とは異なるWebMvcConfigurationSupportクラスを表示します.
たとえば、DispatcherServiceletのHandlerMappingがBenNameUrlHandleMappingの後にRequestMappingHandleMappingである場合、WebMvConfigurationSupportクラスではRequestMappingHandleMappingが最優先となります.(RequestMappingHandleMappingは優先度が高いため、パフォーマンスにも優れています!)
@Configuration
@EnableWebMvc
public class WebConfig {
    
    @Bean
    public ViewResolver viewResolver() {
    	InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
        viewResolver.setPrefix("/WEB-INF/");
        viewResolver.setSuffix(".jsp");
        return viewResolver;
    }
}

WebMvcConfigurer


WebMvcConfiguratorインタフェースを使用して、@EnableWebMvcのデフォルトの空白設定を操作できます.スプリングスタートにもよく使われるそうなので、使い方を熟知しましょう.
@Configuration
@EnableWebMvc
public class WebConfig implements WebMvcConfigurer {
	
    @Override
    public void configureViewResolvers(ViewResolverRegistry registry) {
    	registry.jsp("/WEB-INF/", ".jsp");
    }
}
このインタフェースの設定は次のとおりです.
  • Formatter
  • Interceptor
  • Resource Handler
  • Message Converter
  • CORS
  • Return Value Handler
  • Argument Resolver
  • View Controller
  • Async
  • View Resolver
  • Content Negotiation
  • 最終的には、操作可能なインタフェースとして操作を行うための空の登録をより容易にすることができます.スプリングの起動はどうですか?

    Spring Bootの自動設定について


    DispatcherServiceletにブレークポイントを掛けてデバッグしましょう.
    デバッグによって分かる情報は、HandleMapping、HandleAdapter、ViewResolverなどのスプリングガイドで自動的に設定できます.


    スプリングガイドでは、これらの空の自動設定値はautoconfigure jarファイルのSpringです.工場を開けば全面的に確認できます.

    💡 Spring Bootで空を直接登録するにはどうすればいいですか?
    WebMvcAutoConfigurationクラスを開いて検証します.
    @Configuration(
        proxyBeanMethods = false
    )
    @ConditionalOnWebApplication(
        type = Type.SERVLET
    )
    @ConditionalOnClass({Servlet.class, DispatcherServlet.class, WebMvcConfigurer.class})
    @ConditionalOnMissingBean({WebMvcConfigurationSupport.class})
    @AutoConfigureOrder(-2147483638)
    @AutoConfigureAfter({DispatcherServletAutoConfiguration.class, TaskExecutionAutoConfiguration.class, ValidationAutoConfiguration.class})
    public class WebMvcAutoConfiguration { }
    このコードでは、@ConditionalOnMissingBean言語で、WebMvcConfigurationSupportタイプがない場合は、WebMvcAutoConfiguration設定を使用します.そうでない場合は使用しません.
    したがって、@Configuration, @EnableWebMvc, WebMvcConfigurerの組み合わせが使用される場合、ばねガイドによって提供される自動設定を使用する必要はなく、@Configuration, WebMvcConfigurerの組み合わせが使用される場合、ばねガイドの自動設定を使用することができる.

    application.properties


    Spring bootは自動設定時にpropertyファイルの値を取得して使用します.これらのpropertyを定義するにはclasspathに関する情報と接頭辞があり、チェックと使用が必要です.
    これは手を使わずにカスタマイズできる方法なので、一番よく使われる方法です.


    スプリングガイドを使うと、白奇仙が申請します.まず、propertiesを使用してキー値を調整してカスタマイズし、アプリケーションを実行します.Propertiesが使用できない場合は、WebMvcConfiguratorインタフェースを使用することをお勧めします.できない場合は、空のまま登録して解決します.

    本文の参考

  • 白奇仙のSpringWeb MVC