慢慢来比较快,虚心学技术
前言:学习了解一个新的事物,需要先思考三个问题,是什么?有什么用?怎么用?
1.Spring是什么?
Spring 是一个开源框架,最早由 Rod Johnson 创建,并在《 Expert One-on-One : J2EE Design and Development 》
( http://amzn.com/076454385 )这本著作中进行了介绍。 Spring 是为了解决企业级应用开发的复杂性而创建的,使用 Spring 可以让简单的JavaBean 实现之前只有 EJB 才能完成的事情。但 Spring 不仅仅局限于服务器端开发,任何 Java 应用都能在简单性、可测试性和松耦合等方面从Spring 中获益
2.Spring有什么用?
spring的根本目标是:简化java开发,那么,spring是怎么简化java开发的呢?
spring开发遵循四个关键策略:
- 基于 POJO 的轻量级和最小侵入性编程( Spring 不会强迫你实现 Spring 规范的接口-或继承 Spring 规范的类)
- 通过依赖注入和面向接口实现松耦合(依赖注入:DI)
- 基于切面和惯例进行声明式编程(面向切面编程AOP)
- 通过切面和模板减少样板式代码(如数据库操作等)
3.Spring怎么用?
要思考Spring怎么用,乃是后续章节的篇幅,需要首先了解Spring包含了什么,才能更好的学习使用Spring
Spring的模块组成如下:
- Spring核心容器
管理着 Spring 应用中 bean 的创建、配置和管理.
|------Spring bean 工厂+应用上下文
|------企业服务,例如 E-mail 、 JNDI 访问、 EJB 集成和调度
- 面向切面编程(Spring 的 AOP[Aspect Oriented Programming] 模块)
|------对面向切面编程提供了丰富的支持,这个模块是 Spring 应用系统中开发切面的基础
- 数据访问与集成(JDBC[Java DataBase Connectivity,java数据库连接] 和DAO[Data Access Object]模块)
|------JDBC操作抽象 :抽象了例如获得数据库连接、创建语句、处理结果集到最后关闭数据库连接这些样板式代码,使得开发的数据库操作代码简洁明了
|------数据库操作异常层封装 :避免处理因为关闭数据库资源失败而引发的问题
|-----ORM[Object Relational Mapping,对象关系映射] 模块 :Spring 没有尝试去创建自己的 ORM 解决方案,而是对许多流行的ORM 框架进行了集成,包括 Hibernate , Java Persisternce API 、 Java Data Object 和 iBATIS SQL Maps .
|------Spring的Transiation使用AOP提供事务管理,适用于所有ORM框架和JDBC
|------JMS[Java Message Service] : 使用消息以异步的方式与其他应用集成
- Web 与远程调用
|----- Spring 能够与多种流行的 MVC[ Model-View-Controller]框架进行集成(如 Struts,JSF,WebWork 和 Tapestry),但它的 Web 和远程调用模块自带了一个强大的 MVC 框架(SpringMVC),有助于在 Web 层提升应用的松耦合水平。
|------ Spring 远程调用功能集成了 RMI ( Remote MethodInvocation )、 Hessian 、 Burlap 、 JAX-WS ,同时 Spring 还自带了一个远程调用框架: HTTP invoker
- Instrumentation
|------为 JVM 添加代理( agent )
- 测试
|-----Spring 为使用 JNDI 、 Servlet 和 Portlet 编写单元测试提供了一系列的 mock 对象实现
此外,Spring远不止框架所下载的这些部分,还包括比较重要的Spring Portfolio。Spring提供了多个构建于核心 Spring 框架之上的框架和类库,几乎为每一个领域的 Java 开发都提供了 Spring 编程模型
|-----Spring Web Flow
|-----Spring Web Service
|-----Spring Security : 为 Spring 应用提供了声明式的安全机制
|-----Spring Integration : 提供了多种通用应用集成模式的 Spring 声明式风格实现
|-----Spring Batch : 基于Spring的批量操作应用
|-----Spring Data :使得在 Spring 中使用任何数据库都变得非常容易.无论是关系型数据库还是NoSQL型数据库[非关系型数据库]
|-----Spring Social :一个社交网络扩展模块
|-----Spring Mobile :用于支持移动 Web 应用开发。
|----Spring for Android :结合SpringMobile开发移动应用
|----Spring Boot :以 Spring 的视角,致力于简化 Spring 本身
总结
1.Spring是一个开源框架
2.Spring是为了解决企业级应用开发的复杂性而创建的,其根本目标是简化java开发,其遵循基本的四大原则
3.Spring框架由6大基本模块组成:Spring核心容器、面向切面编程(aop)、数据访问与集成(JDBC&DAO)、Web 与远程调用(SpringMVC)、Instrumentation和测试。
参考文档:
【1】《Spring 实战(第 4 版)》·Craig Walls