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