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");
}
}
このインタフェースの設定は次のとおりです.
最も原始的な方法は、空を直接登録することです.
@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");
}
}
このインタフェースの設定は次のとおりです.
@Configuration
@EnableWebMvc
public class WebConfig {
@Bean
public ViewResolver viewResolver() {
InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
viewResolver.setPrefix("/WEB-INF/");
viewResolver.setSuffix(".jsp");
return viewResolver;
}
}
WebMvcConfiguratorインタフェースを使用して、
@EnableWebMvc
のデフォルトの空白設定を操作できます.スプリングスタートにもよく使われるそうなので、使い方を熟知しましょう.@Configuration
@EnableWebMvc
public class WebConfig implements WebMvcConfigurer {
@Override
public void configureViewResolvers(ViewResolverRegistry registry) {
registry.jsp("/WEB-INF/", ".jsp");
}
}
このインタフェースの設定は次のとおりです.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インタフェースを使用することをお勧めします.できない場合は、空のまま登録して解決します.
本文の参考
@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 { }
Reference
この問題について(Spring MVC設定?Spring BootのSpring MVC設定?), 我々は、より多くの情報をここで見つけました https://velog.io/@maketheworldwise/Spring-MVC-설정-Spring-Boot의-MVC-설정テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol