Spring MVC原理简要概括
本篇简要讲解SpringMVC 的运作方式
Spring 的 web 框架是一个设计良好的 web MVC 框架。MVC模式导致应用程序的不同方面(输入逻辑,业务逻辑和UI逻辑)分离,同时提供这些元素之间的松散耦合。使用spring框架,可以减少重复造轮子,提高对象的利用效率。
- 模型(Model)封装了应用程序数据,通常它们将由POJO类组成。
- 视图(View)负责渲染模型数据,一般来说它生成客户端浏览器可以解释HTML输出。
- 控制器(Controller)负责处理用户请求并构建适当的模型,并将其传递给视图进行渲染。
spring是运行机制是如何构建的呢?在spring web 的jar包(org.springframework.web.servlet)中,可以找到DispatcherServlet 类。xml配置文件的读取、解析,对象的创建、容器的生产、依赖注入、http请求处理等都需要通过这个类来完成。
浏览DispatcherServlet 类可以发现初始化方法initStrategies里面依次调用了以下方法:
/** * Initialize the strategy objects that this servlet uses. * <p>May be overridden in subclasses in order to initialize further strategy objects. */ protected void initStrategies(ApplicationContext context) { initMultipartResolver(context); initLocaleResolver(context); initThemeResolver(context); initHandlerMappings(context); initHandlerAdapters(context); initHandlerExceptionResolvers(context); initRequestToViewNameTranslator(context); initViewResolvers(context); initFlashMapManager(context); }
步骤可以简要理解为:
1、init方法先读取xml配置信息,进行解析
2、找到class文件路径,读取class文件
3、通过反射技术创建对象
4、将创建的对象保存到Ioc容器中(用Map存储)
5、依赖注入(其实就是赋值,反射和动态代理技术是框架牛逼的地方)(@Resource)
怎么注入,如同婚介,首先收集双方的信息,然后根据需求进行匹配。这里匹配的就是容器里的对象和所需要的对象。
IOC spring遍历,解析每一个对象的依赖关系。
--------------------------------------------------------
注解方式调用的是jdk自带的注解方法
--------------------------------------------------------
6、JAVA请求如何处理
通过@RequestMapping注解,在DispatcherServlet 的initHandlerMappings(context);方法里面处理。去扫描Controller里面的@RequestMapping注解。
在doDispatcher收到来自网页的请求时,到存储注解URL的map里面去搜,如果没有,则返回404,有则进入到相应的controller里面去处理调用相应的service。