这两天看了个电影,主题是很俗套的灰姑娘与王子的故事,但故事展开的线索却不是舞会与水晶鞋,而是人类最基本的需求——食物。所以这个片子使用了三个人类最基本的要素:爱情、食物、阶级,野心不可谓不大。不过看到最后,让我这个老男人都快感动落泪的,却与食物和阶级无关,只与爱情有关。这个电影描绘出了爱情中最性感的阶段,两个迥然不同的人在某一点上深深地契合,彼此引为知己;想要逃离却不断被吸引,想要靠近性格却截然不同,想要恋爱却只是在自我的世界做了场梦,想要忘记却已铭刻于心,想要说出喜欢你却又词不达意惊慌失措。好在故事结尾留下了一个happy ending,给饮食男女们留下了一点念想。这部电影叫做《喜欢你》。
(一)初识Spring
Spring是什么?
Spring是一个轻量级应用开发框架,用于应用程序协作对象管理,架构运行自动化,第三方框架整合等。
轻量级是什么意思?
Spring核心core包1.2M,整个框架的JAR包只有8.6M(V5.0.2),非侵入式框架,按需使用。定性的说法是,所谓轻量级是相对于重量级的EJB框架来说的。
Spring能帮我们做什么?
Spring除了不能帮我们写业务逻辑,其余的几乎什么都能帮助我们打理。
Spring常用的开发方式有哪些?
就我看到的三本书,就介绍了三种方法,分别是:
(1)使用Eclipse开发,在项目中按需插入Spring的库文件;
(2)使用MyEclipse开发,可以看作是一个配置了丰富开发工具和插件的Eclipse,好处是方便,缺点是贵,而且还得在电脑上再装一个Eclipse;
(3)使用IntelliJ IDEA开发,同MyEclipse类似,是一个集成了丰富开发工具的IDE,提供了免费版和收费版下载。不过坏消息是只有收费版提供Spring框架。
还有一点区别,方法(2)(3)提供了Maven工具,而方法(1)默认不提供Maven,若要使用,需要另行安装配置。
Spring框架的主要组成部分有哪些?
Spring框架包含的主要模块有Spring CORE,Spring AOP,Spring MVC,Spring DAO,Spring TEST。更详细的功能组成参见相应书籍或Spring库包。
Spring框架的工作流程主要包括哪些?
对于一个桌面应用程序,Spring框架的基本工作流程如图所示:
其核心功能是IoC容器的依赖注入和Bean创建缓存机制。
对于一个Web应用程序,SpringMVC框架的基本工作流程如图所示:
其核心功能是前端控制器DispatcherServlet的请求调度功能,辅以处理映射器、处理器适配器、试图解析器等二级功能共同协作,完成一个典型httprequest的请求处理,具体流程如下:
(1)用户向服务器发送请求request;
(2)DispatcherServlet接收请求,调用处理映射器HandlerMapping获取映射处理器;
(3)DispatcherServlet调用处理器适配器HandlerAdapter,间接调用相应的处理器Handler对用户请求进行处理;
(4)处理器Handler开始处理,其中Spring帮助对请求进行了预处理,完成了消息转换、数据转换和数据验证,开发者需要编程如何对消息和数据进一步处理。
(5)处理器Handler执行完成,返回给前端控制器一个ModelAndView对象,其中包含视图名和模型(数据)。
(6)DispatcherServlet根据返回结果,选择合适的视图解析器ViewResolver进行视图处理。
(7)视图解析器ViewResolver将模型Model传递给指定的视图View(如JSP),并生成视图。
(8)将生成的视图返回给客户端,浏览器渲染生成结果。
Spring MVC应用的开发步骤是什么?
此处特指一个不使用Maven项目管理工具,基于Spring+Spring MVC框架的Web应用程序的开发步骤,如下所示:
(1)选择一个IDE,创建一个Web应用程序 ,加载Spring等第三方基础类库。
(2)配置SpringMVC框架。通过配置web.xml定义一个前端控制器DispatcherServlet(此处指项目的web.xml,不是Tomcat服务器中的web.xml)。其次,需要一个springmvc-congfig.xml配置文件(该文件名可自行设置),其中主要是配置映射处理器等二级功能模块和映射关系。
(3)开发控制层(Controller),定义处理用户请求的处理器Handler,协调模型和视图。依赖关系进行独立配置。
(4)开发展现层(也叫表现层,View),定义如何显示应用程序的数据,并允许用户和系统进一步交互。依赖关系进行独立配置。
(5)开发业务层(也叫领域层,Model),通过业务规则来管理应用程序的数据。依赖关系进行独立配置。
(6)开发持久层(也叫集成层),分离业务逻辑和数据访问逻辑,封装对数据库的访问、存储和对象数据持久化等。依赖关系进行独立配置。
(7)开发横切模块,定义性能监测、访问控制、事务管理、安全保护等横切逻辑。依赖关系进行独立配置。
(8)应用程序测试,对各层功能模块开展单元测试和系统测试。
(9)应用程序打包和发布。
其中,整个应用程序开发过程中都涉及到程序的配置,Spring支持三种配置方式:XML、注解配置、Java类配置,通常三者可以混用,以下是三种注解的适用条件:
(二)Spring框架的知识点梳理
对Spring框架的知识点梳理如下图所示:
(三)CEv6.0项目重构
文章太长,此部分放到下一篇文章中。
参考书目
《Spring 3.0就这么简单》
《Spring入门经典》
《Spring+MyBatis企业应用实战》
《Java EE设计模式—Spring企业级开发最佳实践》