spring mvc应用基于Java config配置是怎么启动的
来源:互联网 发布:文件夹图标制作软件 编辑:程序博客网 时间:2024/03/29 22:04
1.当应用启动时,web容器会创建一个ServletContainerInitializer实例,
2.框架提供的jar包的META-INF/service目录下的javax.ServletServletContainerInitializer内容就是指向ServletContainerInitializer的实现
3.spring mvc框架提供的是org.springframework.web.SpringServletContainerInitailizer实现
4.SpringServletContainerInitializer的@HandlesTypes注解值为WebApplicationInitializer.class,表示它对所有实现了此接口的类感兴趣,他们将会传入onStartup方法的第一个参数
onStartup方法的源码:
public void onStartup(Set<Class<?>> webAppInitializerClasses, ServletContext servletContext) throws ServletException { List<WebApplicationInitializer> initializers = new LinkedList<WebApplicationInitializer>(); if (webAppInitializerClasses != null) { for (Class<?> waiClass : webAppInitializerClasses) { // Be defensive: Some servlet containers provide us with invalid classes, // no matter what @HandlesTypes says... if (!waiClass.isInterface() && !Modifier.isAbstract(waiClass.getModifiers()) && WebApplicationInitializer.class.isAssignableFrom(waiClass)) { try { initializers.add((WebApplicationInitializer) waiClass.newInstance()); } catch (Throwable ex) { throw new ServletException("Failed to instantiate WebApplicationInitializer class", ex); } } } } if (initializers.isEmpty()) { servletContext.log("No Spring WebApplicationInitializer types detected on classpath"); return; } servletContext.log(initializers.size() + " Spring WebApplicationInitializers detected on classpath"); AnnotationAwareOrderComparator.sort(initializers); for (WebApplicationInitializer initializer : initializers) { initializer.onStartup(servletContext); } }
从源码可以看出,所有的Initialize共用一个servletContext,一个一个区启动它们的onStartup方法,可以通过@Order注解改变顺序(数值越低越靠前)
5.基于Java-config的配置只要找到合适的WebApplicationInitializer的子类,重写它的onStartup发方法即可(一般会选择继承AbstractAnnotationConfigDispatherServletInitializer,它帮我们注册了DispatherServlet)
参考博客:http://blog.csdn.net/xiejx618/article/details/42471135
1 0
- spring mvc应用基于Java config配置是怎么启动的
- Spring Web MVC简介 、基于XML配置的MVC应用 、基于注解配置的MVC应用
- 使用java config配置spring mvc + swagger
- SPRINGMYBATIS01 Unit03: Spring Web MVC简介 、 基于XML配置的MVC应用 、 基于注解配置的MVC应用
- Maven构建一个多模块的Spring Boot + Spring MVC项目,完全基于java config
- Spring MVC 在启动的时候是怎么初始化其特有的类的
- 如何使用纯java config来配置spring mvc
- MAVEN Spring MVC Java Config
- SpringMVC,Spring MVC是一个基于Model2的MVC框架
- 将dwr集成到spring mvc(dwr的配置是基于xml)
- 基于xml配置的Spring MVC HelloWorld
- Spring MVC配置文件的三个常用配置详解(annotation-config,annotation-config,annotation-driven)
- spring基于java的配置
- spring 基于java的配置
- spring-基于java的配置
- [Spring] 基于 Java 的配置
- 基于maven的Spring + Spring MVC + MyBatis 环境配置
- 五篇基于java config的spring security
- Redis入门—安装Redis
- 校招准备系列:每天一道算法题(4)
- android 扫描二维码
- <模型汇总_5>生成对抗网络GAN及其变体SGAN_WGAN_CGAN_DCGAN_InfoGAN_StackGAN
- mysql数据库备份与还原
- spring mvc应用基于Java config配置是怎么启动的
- IntentFilter与Intent
- 多系统对接的痛点
- JS正则表达式入门
- SAP问题处理总结
- 树莓派体验4
- angularJs 之 Scope(作用域)
- 获取枪的方向,在枪口处射击
- CPP_Basic_Code_P10.1-PP10.10.8