Spring 大白话简介

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提供面向切面编程,
	   可以方便地实现对程序进行权限拦截和运行监控等功能

声明式事务的支持
    只需要通过配置就可以完成对事务的管理,而无须手动编程