spring无web.xml启动

Servlet3.1规范第八章可插拔性提到
有三种装配web的方式web.xml、webfragment.xml、注解
注解方式需要
jar包的META-INF/services目录中的一个叫做javax.servlet.ServletContainerInitializer的文件
文件里放一个ServletContainerInitializer的实现类,比如spring-web放了org.springframework.web.SpringServletContainerInitializer
在ServletContainerInitializer 实现上的HandlesTypes注解用于表示感兴趣的一些类,容器根据注解来实例化。
Spring的实现类的HandlesTypes注解是WebApplicationInitializer.class,是个接口。
遴选应用的AppInitializer实现了WebApplicationInitializer,因此容器将AppInitializer注入到SpringServletContainerInitializer,
SpringServletContainerInitializer启动时如果发现没有WebApplicationInitializer的实例就记录一个日志,有就调用
WebApplicationInitializer的onStartup。
遴选的AppInitializer的onStartup启动了
Druid的StatViewServlet和WebStatFilter
AnnotationConfigWebApplicationContext(AppConfig,CacheConfig)
Log4jConfigListener
StartupListener
MvcConfig
MvcConfigView
AnnotationConfigWebApplicationContext根据注解将bean注册到系统中

猜你喜欢

转载自xujunhappy.iteye.com/blog/2240052