spring 提供了构建 Web 应用程序的全功能 MVC 模块,而 Spring MVC 就是其中最优秀的 MVC 框架。自从 Spring 2.5 版本发布后,由于支持注解配置,易用性得到了大幅度的提高;Spring 3.0 更加完善,实现了对 Struts 2 的超越。其框架结构如下: 框架图
其中DispatcherServlet、HandlerMapping和ViewResolver 只需要在XML文件中配置即可,从而大大提高了开发的效率,特别是对于 HandlerMapping 框架为其提供了默认的配置。
-
spring容器
在Spring整体框架的核心概念中,容器是核心思想,就是用来管理Bean的整个生命周期的,而在一个项目中,容器不一定只有一个,Spring中可以包括多个容器,而且容器有上下层关系,目前最常见的一种场景就是在一个项目中引入Spring和SpringMVC这两个框架,那么它其实就是两个容器,Spring是父容器,SpringMVC是其子容器,并且在Spring父容器中注册的Bean对于SpringMVC容器中是可见的,而在SpringMVC容器中注册的Bean对于Spring父容器中是不可见的,也就是子容器可以看见父容器中的注册的Bean,反之就不行。通过xml文件对bean进行批量注册,交由spring容器处理:
<context:component-scan base-package="com.hust" use-default-filters="true">
<!--不把Controller注册为bean dispatcher-servlet扫描Controller-->
<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"></context:exclude-filter>
</context:component-scan>
Controller交由spring mvc容器处理:
<context:component-scan base-package="com.hust" use-default-filters="false">
<!--只扫描控制器-->
<context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"></context:include-filter>
</context:component-scan>
-
容器启动过程
关于spring容器的详细启动过程,可以通过阅读spring源码来理解,这里有一篇很好的博客
spring容器启动以后,通过读取配置文件来创建bean,再读取web.xml中的其他配置,例如过滤器等一系列的配置,之后还会创建一个spring mvc的容器,它一般只将Controller注册为bean,作为前端控制器来使用。
网友评论