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

Antworten auf die Frage(4)

Ihre Antwort auf die Frage