SpringMVC-part2

SpringMVC-part2

首先对昨天的问题加以补充,今天空余时间查询了springmvc的参考文档及api,发现以下几个重要的地方

1

Below is an example of the Java configuration that registers and initializes the
DispatcherServlet.This class is auto-detected by the Servlet container (see Servlet Config):


public class MyWebApplicationInitializer implements WebApplicationInitializer {

    @Override
    public void onStartup(ServletContext servletCxt) {

        // Load Spring web application configuration
        AnnotationConfigWebApplicationContext ac = new AnnotationConfigWebApplicationContext();
        ac.register(AppConfig.class);
        ac.refresh();

        // Create and register the DispatcherServlet
        DispatcherServlet servlet = new DispatcherServlet(ac);
        ServletRegistration.Dynamic registration = servletCxt.addServlet("app", servlet);
        registration.setLoadOnStartup(1);
        registration.addMapping("/app/*");
    }
}

2

In addition to using the ServletContext API directly, you can also extend AbstractAnnotationConfigDispatcherServletInitializer and override specific methods (see example under Context Hierarchy).


Below is example configuration with a WebApplicationContext hierarchy:


public class MyWebAppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {

    @Override
    protected Class<?>[] getRootConfigClasses() {
        return new Class<?[] { RootConfig.class };
    }

    @Override
    protected Class<?>[] getServletConfigClasses() {
        return new Class<?[] { App1Config.class };
    }

    @Override
    protected String[] getServletMappings() {
        return new String[] { "/app1/*" };
    }
}

可以看到,第二部分即为我们昨天配置的dispatcherservlet初始化方法。在参考文档中很明确的说明了,spring的初始化入口为WebApplicationInitializer,但其内部实现了一个简单的AbstractAnnotationConfigDispatcherServeltInitializer。我们只需要重写三个接口就行。

3


AbstractAnnotationConfigDispatcherServletInitializer

看一下spring官方api
这里写图片描述
其实springmvc只需要重写两个类。

  • getRootConfigClasses() –
  • getServletConfigClasses() –
    其实getRootConfigClasses和getServletConfigClass并没有什么不一样,只是习惯性的在两个配置文件中放入不同的配置信息,至于到底有哪些不一样的地方,我还不明白。

4

写的太乱了点,当作自己笔记吧,下一章明确一下注解的作用。
@configuration
@component
@componentScan
@Bean

猜你喜欢

转载自blog.csdn.net/qq_20996105/article/details/79355707