Spring学习(1)-了解spring的各个模块

Spring学习(1)-了解spring的各个模块

1.Spring简介

Spring 被称为 J2EE 的春天,是分层的 Java SE/EE应用 full-stack 轻量级开源框架,以 IoC(Inverse Of Control:反转控制)和 AOP(Aspect Oriented Programming:面向切面编程)为两大核心。

Spring 框架通过声明式方式灵活地进行事务的管理,提高开发效率和质量。

Spring 框架不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何 Java 应用都可以从 Spring 中受益。

Spring使用基本的 JavaBean 完成以前只可能由 EJB 完成的工作,取代了 EJB 臃肿和低效的开发模式。

Spring 框架还是一个超级粘合平台,除了自己提供功能外,还提供粘合其他技术和框架的能力。

Spring 的发展历程

1997 年 IBM提出了EJB 的思想
1998 年,SUN制定开发标准规范 EJB1.0
1999 年,EJB1.1 发布
2001 年,EJB2.0 发布
2003 年,EJB2.1 发布
2006 年,EJB3.0 发布
Rod Johnson ( spring 之父)
Expert One-to-One J2EE Design and Development(2002)
阐述了 J2EE 使用EJB 开发设计的优点及解决方案
Expert One-to-One J2EE Development without EJB(2004)
阐述了 J2EE 开发不使用 EJB的解决方式(Spring 雏形)
2017 年 9 9 月份发布了 g spring 的最新版本 0 spring 5.0 通用版( GA

2.Spring的优势

  1. 方便解耦,简化开发
    通过 Spring提供的 IoC容器,可以将对象间的依赖关系交由 Spring进行控制,避免硬编码所造成的过度程序耦合。
    简单来说,Spring 就是一个大工厂,可以将所有对象的创建和依赖关系的维护交给 Spring 管理。

  2. AOP 编程的支持
    Spring 提供面向切面编程,可以方便地实现对程序进行权限拦截和运行监控等功能。

  3. 声明式事务的支持
    只需要通过配置就可以完成对事务的管理,而无须手动编程。提高开发效率和质量。

  4. 方便程序的测试
    Spring 支持 JUnit框架,可以通过注解方便地测试 Spring 程序。

  5. 方便集成各种优秀框架
    Spring 不排斥各种优秀的开源框架,其内部提供了对各种优秀框架(如 Struts2、Hibernate、MyBatis 等)的直接支持。

  6. 降低 JavaEE API 的使用难度
    Spring 对 Java EE 开发中非常难用的一些 API(JDBC、JavaMail、远程调用等)都提供了封装,使这些 API 应用的难度大大降低。

  7. Java 源码是经典学习范例
    Spring的源代码设计精妙、结构清晰、匠心独用,处处体现着大师对Java 设计模式灵活运用以及对 Java技术的高深造诣。它的源代码无意是 Java 技术的最佳实践的范例。

  8. 不断快速更新迭代
    Spring仍在不断完善自己,面向更好的春天。

3.Spring的核心模块(体系结构)

1.Spring Framework下载地址

官网:http://spring.io/
下载地址:http://repo.springsource.org/libs-release-local/org/springframework/spring

笔者学习使用的是 spring5.0.2 。
特别说明:
spring5 版本是用 jdk8 编写的,所以要求我们的 jdk 版本是 8 及以上。
同时 tomcat 的版本要求 8.5 及以上。

2.Spring Framework的模块图

在这里插入图片描述

2.1 Core Container(核心容器)

在这里插入图片描述

Spring 的核心容器是其他模块建立的基础,由 Beans 模块、Core 核心模块、Context上下文模块和 Expression Language 表达式语言模块组成,具体介绍如下:

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

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

在这里插入图片描述

数据访问/集成层包括 JDBCORMOXMJMSTransactions 模块,具体介绍如下。

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

2.3 Web 模块

在这里插入图片描述

Spring 的 Web 层包括 WebServletStrutsPortlet 组件,具体介绍如下。

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

2.4 Spring AOP 简介

如果说 IoC 是 Spring 的核心,那么面向切面编程就是 Spring 最为重要的功能之一了,在数据库事务中切面编程被广泛使用。

AOP即 Aspect Oriented Program 面向切面编程

首先,在面向切面编程的思想里面,把功能分为核心业务功能,和周边功能。

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

周边功能在 Spring 的面向切面编程AOP思想里,即被定义为切面

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

AOP的目的

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

AOP当中的概念

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

2.5 Spring Aspects 模块

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

2.6 Instrumentation 模块

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

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

2.7 Messaging 模块

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

2.8 Test 模块

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

每个模块都可以在Spring Framework找到相应的包,很多包需要依赖其他包才能运作。


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


推荐阅读


欢迎点赞评论,指出不足,笔者由衷感谢o!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值