getServletConfigClasses () vs getRootConfigClasses () beim Erweitern von AbstractAnnotationConfigDispatcherServletInitializer
Was ist der Unterschied zwischengetServletConfigClasses()
vsgetRootConfigClasses()
bei VerlängerungAbstractAnnotationConfigDispatcherServletInitializer
. Ich habe seit heute Morgen eine Menge Quellen gelesen, aber ich habe noch kein klares Verständnis für die Unterschiede:
Bitte schauen Sie sich diese beiden Konfigurationen an:
1).
public class SpringMvcInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
@Override
protected Class<?>[] getRootConfigClasses() {
return new Class[] { ConServlet.class };
}
@Override
protected Class<?>[] getServletConfigClasses() {
return null;
}
....
....
}
DasConServlet.class
bezieht sich auf
@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 };
}
.....
}
das WebConfig.class bezieht sich auf
@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;
}
}
Ich sehe beide ConServlet & WebConfig (mehr oder weniger) dasselbe tun wie die Ansicht initialisieren:
Aber wieso
ConServlet wird in @ zurückgegebgetRootConfigClasses()
while WebConfig wird in @ zurückgegebgetServletConfigClasses()
Ich lese die Dokumentation
beidegetRootConfigClasses () & getServletConfigClasses () ist fü
Specify @Configuration und / oder @Component-Klassen, die bereitgestellt werden sollen .. (ihre Unterschiede)
der Stammanwendungskontext zumgetRootConfigClasses()
der Kontext der Dispatcher-Servlet-Anwendung für getServletConfigClasses()
aber warum dann ConServlet & WebConfigenn ich die gleichen Dinge tue (wie die Initialisierung der Ansicht), bin ich vielleicht derjenige, der das falsch verstanden hat. Was sind eigentlich Root-Kontext und Dispatcher-Servlets (ich kenne dieses) imeinfacher Begriff / Beispiel
Vielen Dank