拡張時のgetServletConfigClasses()
vs の違いは何ですか。今朝から多くの情報源を読んでいますが、違いについてはまだ明確に理解していません:getRootConfigClasses()
AbstractAnnotationConfigDispatcherServletInitializer
次の 2 つの構成をご覧ください。
1)。
public class SpringMvcInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
@Override
protected Class<?>[] getRootConfigClasses() {
return new Class[] { ConServlet.class };
}
@Override
protected Class<?>[] getServletConfigClasses() {
return null;
}
....
....
}
はConServlet.class
、
@EnableWebMvc
@Configuration
@ComponentScan({ "com" })
@Import({ SecurityConfig.class })
public class ConServlet {
@Bean
public InternalResourceViewResolver viewResolver() {
InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
viewResolver.setViewClass(JstlView.class);
viewResolver.setPrefix("/WEB-INF/pages/");
viewResolver.setSuffix(".jsp");
return viewResolver;
}
}
2)。
public class WebInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
@Override
protected Class<?>[] getRootConfigClasses() {
return null;
}
@Override
protected Class<?>[] getServletConfigClasses() {
return new Class<?>[] { WebConfig.class };
}
.....
}
WebConfig.classが参照している
@Configuration
@EnableWebMvc
@ComponentScan(basePackages = { "....." })
public class WebConfig extends WebMvcConfigurerAdapter {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/resources/**").addResourceLocations("/resources/");
}
@Bean
public ViewResolver viewResolver() {
InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
viewResolver.setViewClass(JstlView.class);
viewResolver.setPrefix("/WEB-INF/views");
viewResolver.setSuffix(".jsp");
return viewResolver;
}
}
ビューの初期化など、 ConServletとWebConfigの両方が (多かれ少なかれ) 同じことを行っていることがわかります。
しかし、なぜ :
- ConServletが返されます
getRootConfigClasses()
- WebConfigが返される間
getServletConfigClasses()
ドキュメントを読みました
getRootConfigClasses()とgetServletConfigClasses( )の両方 が
提供される @Configuration および/または @Component クラスを指定します.. (それらの違い)
- のルート アプリケーション コンテキスト
getRootConfigClasses()
- のディスパッチャ サーブレット アプリケーション コンテキスト
getServletConfigClasses()
しかし、なぜConServletとWebConfig が同じこと (ビューの初期化など) を行っているのでしょうか。簡単な用語/例で実際にルートコンテキストとディスパッチャーサーブレット(私はこれを知っています)とは何ですか
ありがとうございました!