Spring简介
Spring: 是Java EE开发领域的一款轻量级的开源框架 由“Spring之父”Rod Johnson于2002年提出并开发完成的Spring框架 Spring之父为简化Java企业级应用程序的开发难度和周期而创建Spring框架 Spring目前是Java生态中最受欢迎的底层框架,今天Spring已经是JavaEE开发的行业标准,如果说你不会使用Spring 那么可以毫不夸张的说,你无法在Java EE开发界立足
Spring诞生与发展
在Spring出现之前,我们开发Java程序需使用EJB这种笨重的框架 她会产生很多问题,如: 使用复杂、代码臃肿、代码侵入性强、开发周期长、移植难度大等 Rod Johnson在2004年编著的畅销书《Expert One-on-One J2EE Development without EJB中 针对EJB各种臃肿的结构进行逐一的分析和否定 并分别以更加简洁的方式进行了替换 此时Rod Johnson编写了一个3万行代码的文件,用于展示不使用EJB 也可以编写出高质量、可扩展的 Java 应用程序 这个类包含许多可重用的 Java 接口和类,如 ApplicationContext、BeanFactory等 这个就是Spring的雏形
Spring的发展历史
2003年2月,Spring 0.9版本发布,它采用了 Apache 2.0 开源协议 2004年4月,Spring 1.0 版本正式发布 借助笔者发稿前,Spring发布了第 5 个大版本(Spring 5)
普通人眼中的Spring
通过我们说的Spring,指Spring技术栈 更大的说:"一切使用Spring为基础扩展的技术"都可称之为“Spring”
Spring常见的子项目
项目名称 | 备注 |
Spring Data | Spring 提供的数据访问模块 对 JDBC 和 ORM 提供了很好的支持 使用她开发人员可以使用一种相对统一的方式,来访问位于不同类型数据库中的数据 |
Spring Batch | 一款专门针对企业级系统中的日常批处理任务的轻量级框架, 能够帮助开发人员方便的开发出健壮、高效的批处理应用程序 |
Spring Security | 前身为 Acegi,是 Spring 中较成熟的子模块之一。 它是一款可以定制化的身份验证和访问控制框架 |
Spring Mobile | 是对 Spring MVC 的扩展,用来简化移动端 Web 应用的开发 |
Spring Boot | Spring 团队提供的全新框架,它为 Spring 以及第三方库一些开箱即用的配置, 可以简化 Spring 应用的搭建及开发过程 |
Spring Cloud | 一款基于 Spring Boot 实现的微服务框架。 它并不是某一门技术,而是一系列微服务解决方案或框架的有序集合。 它将市面上成熟的、经过验证的微服务框架整合起来, 并通过 Spring Boot 的思想进行再封装,屏蔽调其中复杂的配置和实现原理, 最终为开发人员提供了一套简单易懂、易部署和易维护的分布式系统开发工具包 |
Spring框架的核心
Spring两个核心部分:IoC和AOP
核心 | 备注 |
IOC | Inverse of Control 的简写,为“控制反转”, 指把创建对象过程交给 Spring 进行管理 |
AOP | Aspect Oriented Programming 的简写, “面向切面编程” |
AOP
AOP的功能: 用来封装多个类的公共行为, 将那些与业务无关, 却为业务模块所共同调用的逻辑封装起来, 减少系统的重复代码,降低模块间的耦合度。 AOP还解决一些系统层面上的问题,如日志、事务、权限等。
Spring程序实际开发说明
服务器端应用程序: 使用采用三层体系架构, 分别为表现层(web)、业务逻辑层(service)、持久层(dao) Spring为Java EE 应用各层的解决方案 如: 表现层提供对 Spring MVC、Struts2等框架的整合 业务逻辑层提供管理事务和记录日志的功能 持久层还可整合 MyBatis、Hibernate 和 JdbcTemplate 等技术 对数据库进行访问
Spring Framework特点
方便解耦,简化开发 Spring 就是一个大工厂 可以将所有对象的创建和依赖关系的维护交给 Spring 管理。 方便集成各种优秀框架 Spring不排斥各种优秀的开源框架 其内部提供了对各种优秀框架(如 Struts2、Hibernate、MyBatis 等)的直接支持 降低 Java EE API 的使用难度 Spring 对 Java EE 开发中非常难用的一些 API(JDBC、JavaMail、远程调用等) 都提供了封装 使这些 API 应用的难度大大降低 方便程序的测试 Spring支持JUnit4,可以通过注解方便地测试Spring程序 AOP 编程的支持 Spring提供面向切面编程, 可以方便地实现对程序进行权限拦截和运行监控等功能 声明式事务的支持 只需要通过配置就可以完成对事务的管理,而无须手动编程