1. 原生 Web 弊端
(1)Java Web 原生开发技术耦合度极高!例如: Service 操作,JDBC 数据库相关操作
(2)JavaEE API、Servlet、JDBC 操作流程非常繁琐
(3)项目代码移植性差。
(4)侵入性强、Service 层、Dao 层、数据库切换
────────────────────────────────────────────────────────────
2. Spring 概述
(1)Spring 框架是一个轻量级的开源的 JavaEE 应用程序框架,针对 bean 的生命周期进行管理的轻量级容器.
(2)Spring 解决了企业应用开发的复杂性,提供了功能强大 IOC、AOP 及 web MVC 等功能。Spring 可以单独应用于构筑应用程序,也可以和 Struts、webwork、Tapestry 等众多 web 框架组合使用,并且可以与 Swing 等桌面应用程序组合。因此 Spring 不仅仅能应用于 JavaEE 应用程序之中,也可以应用于桌面应用程序以及小应用程序之中。
(3)Spring 框架主要由七部分组成,分别是 Spring core、Spring AOP、Spring ORM、SpringDAO、Spring context、Spring web 和 Spring web MVC。
────────────────────────────────────────────────────────────
3. Spring 框架特性
(1)非侵入式:基于 Spring 开发的应用中的对象可以不依赖于 Spring 的 API。
(2)控制反转 IOC:【Inversion of Control】由 Spring 框架管理 Bean 。
(3)依赖注入 DI:【Dependency Injection】是指依赖的对象不需要开发者去赋值,由 Spirng 自动通过配置赋值。
(4)面向切面编程:AOP——Aspect Oriented Programming
(5)容器:Spring 是一个容器,因为它包含并且管理应用对象的生命周期
(6)组件化:Spring 实现了使用简单的组件配置组合成一个复杂的应用。在 Spring 中可以使用 XML 和 Java 注解组合这些对象。
(7)一站式:在 IOC 和 AOP 的基础上可以整合各种企业应用的开源框架和优秀的第三方类库(实际上 Spring 自身也提供了表现层的 SpringMVC 和持久层的 Spring JDBC)
────────────────────────────────────────────────────────────
4. Spring 特点
(1)方便解耦,简化开发
(2)Aop 编程支持
(3)方便程序测试
(4)方便和其他框架进行整合
(5)方便进行事务操作:Spring 提供了一致的事务管理接口,可向下扩展到(使用一个单一的数据库)本地事务并扩展到全局事务( 使用 JTA )
(6)降低 API 开发难度:Spring 对 JavaEE 开发中的一些复杂 API(JDBC、JavaMail、远程调用等)都提供了封装,使这些 API 应用难度大大降低。
────────────────────────────────────────────────────────────
5. 使用 Spring 框架的好处
(1)Spring 简化开发,利用了一些现有的技术,像 ORM 框架、日志框架、JEE、Quartz 和 JDK 计时器,其他视图技术。
(2)Spring 的 IOC 容器往往是轻量级的,特别是当与 EJB 容器相比的时候。这有利于在内存和 CPU 资源有限的计算机上开发和部署应用程序。
(3)Spring 可以使开发人员使用 POJOs 开发企业级的应用程序。只使用 POJOs 的好处是你不需要一个 EJB 容器产品,比如一个应用程序服务器,但是你可以选择使用一个健壮的 Servlet 容器,比如 Tomcat 或者一些商业产品。
(4)测试一个用 Spring 编写的应用程序很容易,因为环境相关的代码被移动到这个框架中。此外,通过使用 JavaBean-style POJOs,它在使用依赖注入注入测试数据时变得更容易。
(5)Spring 的 web 框架是一个设计良好的 web MVC 框架,它为比如 Structs 或者其他工程上的或者不怎么受欢迎的 web 框架提供了一个很好的供替代的选择。MVC 模式导致应用程序的不同方面(输入逻辑,业务逻辑和UI逻辑)分离,同时提供这些元素之间的松散耦合。模型(Model)封装了应用程序数据,通常它们将由 POJO 类组成。视图(View)负责渲染模型数据,一般来说它生成客户端浏览器可以解释 HTML 输出。控制器(Controller)负责处理用户请求并构建适当的模型,并将其传递给视图进行渲染。