getServletConfigClasses () против getRootConfigClasses () при расширении AbstractAnnotationConfigDispatcherServletInitializer
В чем разница междуgetServletConfigClasses()
противgetRootConfigClasses()
при расширенииAbstractAnnotationConfigDispatcherServletInitializer
, С самого утра я читал много источников, но пока не получил четкого понимания различий:
Пожалуйста, посмотрите на эти две конфигурации:
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 делаю то же самое (например, инициализирующий взгляд), может быть, я это неправильно понял. Что такое на самом деле корневой контекст и диспетчерские сервлеты (я знаю это) впростой термин / пример
Спасибо!