Spring学习(1)-认识spring的各个模块

1.Spring简介

Spring 被称为 J2EE 的春天,是一个开源的轻量级的 Java 开发框架, 具有控制反转(IoC)和面向切面(AOP)两大核心。
Java Spring 框架通过声明式方式灵活地进行事务的管理,提高开发效率和质量。
Spring 框架不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何 Java 应用都可以从 Spring 中受益。
Spring使用基本的 JavaBean 完成以前只可能由 EJB 完成的工作,取代了 EJB 臃肿和低效的开发模式。
Spring 框架还是一个超级粘合平台,除了自己提供功能外,还提供粘合其他技术和框架的能力。

2.Spring的优势

1)方便解耦,简化开发
Spring 就是一个大工厂,可以将所有对象的创建和依赖关系的维护交给 Spring 管理。
2)方便集成各种优秀框架
Spring 不排斥各种优秀的开源框架,其内部提供了对各种优秀框架(如 Struts2、Hibernate、MyBatis 等)的直接支持。
3)降低 Java EE API 的使用难度
Spring 对 Java EE 开发中非常难用的一些 API(JDBC、JavaMail、远程调用等)都提供了封装,使这些 API 应用的难度大大降低。
4)方便程序的测试
Spring 支持 JUnit4,可以通过注解方便地测试 Spring 程序。
5)AOP 编程的支持
Spring 提供面向切面编程,可以方便地实现对程序进行权限拦截和运行监控等功能。
6)声明式事务的支持
只需要通过配置就可以完成对事务的管理,而无须手动编程。
7) 不断快速更新迭代
Spring仍在不断完善自己,面向更好的春天。

3.Spring核心模块

Spring Framework下载地址

spring基础包下载地址:spring-4.1.9
建议迅雷插件接管chrome下载,快好几倍呢~

作者本人基于版本4.1.9学习,spring更新速度很快,现在已经更新至.5.2.5,但spring的思想体系是不会变的,从底层学起才会让自己铜墙铁骨,刀枪不入。

Spring Framework的模块图

Spring学习(1)-认识spring的各个模块_第1张图片

3.1 Core Container(核心容器)

Spring学习(1)-认识spring的各个模块_第2张图片
Spring 的核心容器是其他模块建立的基础,由 Beans 模块、Core 核心模块、Context上下文模块和 Expression Language 表达式语言模块组成,具体介绍如下:

  • Beans 模块:提供了 BeanFactory,是工厂模式的经典实现,Spring 将管理对象称为 Bean。
  • Core 核心模块:提供了 Spring 框架的基本组成部分,包括 IoCDI功能。
  • Context 上下文模块:建立在核心和 Beans 模块的基础之上,它是访问定义和配置任何对象的媒介。ApplicationContext 接口是上下文模块的焦点。
  • Spring Expression Language(SpEL)模块:是运行时查询和操作对象图的强大的表达式语言。

3.2 Data Access/Integration(数据访问/集成)

Spring学习(1)-认识spring的各个模块_第3张图片
数据访问/集成层包括 JDBCORMOXMJMSTransactions 模块,具体介绍如下。

  • JDBC 模块:提供了一个 JDBC 的抽象层,大幅度减少了在开发过程中对数据库操作的编码。
  • ORM 模块:对流行的对象关系映射 API,包括 JPA、JDO、Hibernate 和 iBatis 提供了的集成层。
  • OXM 模块:提供了一个支持对象/XML 映射的抽象层实现,如 JAXB、Castor、XMLBeans、JiBX 和 XStream。
  • JMS 模块:指 Java 消息服务,包含的功能为生产和消费的信息。
  • Transactions 事务模块(tx包):支持编程和声明式事务管理实现特殊接口类,并面向所有的 POJO——JavaBeans(简单的实体类)。

3.3 Web 模块

Spring学习(1)-认识spring的各个模块_第4张图片
Spring 的 Web 层包括 WebServletStrutsPortlet 组件,具体介绍如下。

  • Web 模块:提供了基本的 Web 开发集成特性,例如多文件上传功能、使用的 Servlet 监听器的 IoC 容器初始化以及 Web 应用上下文。
  • Servlet模块(web包):包括 Spring 模型—视图—控制器(MVC)实现 Web 应用程序。
  • Struts 模块(web包):包含支持类内的 Spring 应用程序,集成了经典的 Struts Web 层。
  • Portlet 模块:提供了在 Portlet 环境中使用 MVC实现,类似 Web-Servlet 模块的功能。

3.4 Spring AOP 简介

如果说 IoC 是 Spring 的核心,那么面向切面编程就是 Spring 最为重要的功能之一了,在数据库事务中切面编程被广泛使用。
AOPAspect Oriented Program 面向切面编程
首先,在面向切面编程的思想里面,把功能分为核心业务功能,和周边功能。

  • 所谓的核心业务,比如登陆,增加数据,删除数据都叫核心业务(主业务)
  • 所谓的周边功能,比如性能统计,日志,事务管理等等(辅助业务)

周边功能在 Spring 的面向切面编程AOP思想里,即被定义为切面
在面向切面编程AOP的思想里面,核心业务功能和切面功能分别独立进行开发,然后把切面功能和核心业务功能 “编织” 在一起,这就叫AOP
AOP的目的

  • AOP能够将那些与业务无关,却为业务模块所共同调用的逻辑或责任(例如事务处理、日志管理、权限控制等)封装起来,便于减少系统的重复代码,降低模块间的耦合度,并有利于未来的可拓展性和可维护性。

AOP当中的概念

  • 切入点(Pointcut)
    在哪些类,哪些方法上切入(where)
  • 通知/增强(Advice)
    在方法执行的什么实际(when:方法前/方法后/方法前后)做什么(what:增强的功能)
  • 切面(Aspect)
    切面 = 切入点 + 通知,通俗点就是:在什么时机,什么地方,做什么增强!
  • 织入(Weaving)
    把切面(Aspect)加入到目标对象(target),并创建出代理对象(proxy)的过程。(由 Spring 来完成)

3.5 Spring Aspects 模块

提供对AspectJ的支持,以便可以方便的将面向方面的功能集成进IDE中,比如Eclipse AJDT。

3.6 Instrumentation 模块

提供了类工具的支持和类加载器的实现,可以在特定的应用服务器中使用。

spring-instrument.jar:Spring3.0对服务器的代理接口。
spring-instrument-tomcat .jar:Spring3.0对Tomcat的连接池的集成。

3.7 Messaging 模块

spring-messaging模块为集成messaging api和消息协议提供支持。

3.8 Test 模块

支持 Spring 组件,使用 JUnit 或 TestNG 框架的测试。


每个模块都可以在Spring Framework找到相应的包,不过很多包需要依赖其他包才能运作,作者在上方截图整理几个核心包的分类,供自己和小白参考。

本文参考的文章:
spring-jar包详解整理
Spring体系结构详解
Spring学习(1)——快速入门

如果对你有所帮助,请点个赞支持一下,谢谢~

下一篇介绍Spring的ioc思想:Spring学习(2)-搞懂Spring核心思想:IOC(控制反转)和DI(依赖注入)

你可能感兴趣的:(spring学习,spring,java)