Spring简介
Spring
Spring 起源
EJB 弃用
1998 年 Sun 公司 发布 JavaEE 企业级解决方案 EJB1.0 框架,开发者可以使用 EJB 构建企业级应用;在使用 EJB 的过程中,开发者发现 EJB 极度复杂和繁琐。随着时间的推移,很多开发者对 EJB 不再抱有幻想,开始寻求更简便的方法。
Spring 崛起
Spring 是一个开源框架,最早由 Rod Johnson 创建(Spring 之父)。Spring 是为了解决企业级应用开发的复杂性而创建的,使用 Spring可以让简单的 JavaBean 实现之前只有 EJB 才能完成的事情。但 Spring 不仅仅局限于服务器开发,任何 Java 应用都能在简单性、可测试性和松耦合等方面从 Spring 中获益。
Rod Johnson(Spring 之父)2007 年发布 Spring 1.0 版本,直到今天 Spring 框架已经成为基于 POJO 的轻量级 JavaEE 开发框架的领导者。
Spring 是什么
Spring 是分层的 JavaEE 应用一站式的轻量级开源框架,以控制反转(Inverse of Control,IoC)和面向切面编程(Aspect Oriented Programming,AOP)为内核,提供了表现层Spring MVC、持久层 Spring JDBC 以及业务层事务管理等众多的企业级应用技术
- Spring 整合了大量著名的第三方框架和类库(如Struts、Hibernate、MyBaits、iBATIS、JPA、Web Service、FreeMaker等),逐渐成为使用最多的JavaEE企业应用开源框架
- Spring 的一个最大的目的就是使 JavaEE 企业级开发更加容易。同时,Spring 与 MyBatis、Hibernate 等单层框架不同,Spring致力于提供一个以统一的、高效的方式构造整个应用,并且可以将单层框架以最佳的组合揉和在一起建立一个连贯的体系。可以说 Spring 是一个提供了更完善开发环境的一个框架
Spring 的使命:简化 Java 开发
Spring 的特点
方便解耦,简化开发(核心)
通过Spring提供的IoC容器,可以将对象之间的依赖关系交由Spring进行控制,避免硬编码所造成的过度程序耦合。
AOP编程的支持(核心)
通过Spring提供的AOP功能,用户可以方便地进行面向切面编程,许多不容易用传统面向对象编程(OOP)实现的功能都可以通过AOP轻松应对。
声明式事务的支持(核心)
通过 Spring 的声明式事务灵活地进行事务管理,提高开发效率和质量。
方便的程序测试
可以用非容器依赖的编程方式进行几乎所有的测试工作
方便集成各种优秀框架
Spring不排斥各种优秀框架,并提供对各种优秀框架(如Struts、Hibernate、Hessian、Quartz等)的支持支持
降低Java EE API的使用难度
Spring为很多难用的Java EE API(如JDBC、JavaMail、远程调用等)提供了一个简单封装。通过Spring的简单封装,大大降低了这些Java EE API的使用难度
Spring源码是经典的学习范例
Spring的源码设计合理、结构清晰,处处体现出对Java设计模式的灵活运用以及Java技术的深度挖掘
Spring 体系结构
- Spring Core:Spring 核心模块实现了 IoC 容器的功能,它将类和类之间的依赖从代码中脱离出来,用配置的方式进行依赖关系描述,由 IoC 容器负责依赖类之间的创建、拼接、管理、获取等工作
- Spring AOP :AOP 是继 OOP 之后,对编程设计思想影响最大的技术之一。AOP 是进行横切逻辑编程的思想,它开拓了人们考虑问题的思路。在 AOP 模块里,Spring 提供了满足 AOP Alliance 规范的实现,此外,还整合了 AspectJ 这种 AOP 语言级的框架。在Spring 里实现 AOP 编程拥有众多的选择。
- Spring DAO:Spring 通过模板化技术对各种数据访问技术进行了薄层的封装,将模式化的代码隐藏起来,使数据访问的程序得到大幅简化。这样,Spring 就建立起了和数据形式及访问技术无关的统一的 DAO 层,借助 AOP 技术,Spring 提供了声明式事务的功能。
- Spring Web:Web及远程操作:该模块建立在Application Context模块之上,提供了Web应用的各种工具类,如通过Listener或Servlet初始化Spring容器,将Spring容器注册到Web容器中。其次,该模块还提供了多项面向Web的功能,如透明化文件上传、Velocity、FreeMarker、XSLT的支持。此外,Spring可以整合Struts、WebWork、Tapestry Web等MVC框架。
此外,Spring 在远程访问以及 Web Service 上提供了对很多著名框架的整合。由于 Spring 框架的扩展性,特别是随着 Spring 框架影响性的扩大,越来越多框架主动地支持 Spring 框架,让 Spring 框架应用涵盖面越来越宽广。
Spring 生态圈
由于 Spring 框架的扩展性,衍生出大量的基于 Spring 的应用框架
- Spring Data
- Spring Session
- Spring Batch
- Spring Cloud
- Spring Fox
- Spring Security
- Spring Boot
- ...