Spring的基本概念

Spring框架是一个开源轻量级的J2EE框架

轻量级:引入的jar包非常少

开源:免费的源代码

框架:用于解决企业应用开发的复杂性

  • Spring的特性

    • 非侵入式:使用Spring Framework开发应用程序时,Spring对应用程序本身的结构影响非常小,对领域模型可以做到零污染;对功能性组件也只需要使用几个简单的注解进行标记,完全不会破坏原有结构,反而能将组件结构进一步简化,使得开发应用程序时结构清晰、简洁优雅

    • DI:依赖注入,指依赖的对象不再需要手动调用setXX方法来设置,而是用过配置赋值

    • 容器:Spring是一个容器,因为它包含并且管理应用对象的生命周期

    • 组件化:Spring实现了使用简单的组件配置组合成一个复杂的应用。在Spring中可以使用XML和Java注解组合这些对象

    • 一站式:在IOC和AOP的基础上,可以整合各种企业应用的开源框架和优秀的第三方类库

    • IOC:控制反转

      把创建对象的过程交给Spring管理

    • AOP:面向切面编程

      不修改源代码的情况下,进行功能的扩展或增强

  • Spring框架的优点

    • 低入侵式设计,代码污染小:基于Spring开发的应用中的对象可以不依赖于Spring的API

    • 方便解耦、简化开发:依赖注入的方式,不再需要手动调用来注入,直接通过配置或者注解的方式实现

    • IOC控制反转:使用控制反转,将对象的创建权交给Spring创建,使用Spring之前,对象的创建都是由我们自己在代码中new的

    • AOP编程支持:使用注解的方式完成切面业务工作。

    • 方便程序测试:一个单元模式中是有组织的,即使包和类的数量非常大,只要担心业务本身,其他可以忽略,测试也是如此

    • 方便和其他框架整合:Spring自身也集成了一些现有技术框架,例如:ORM、日志、Quartz框架等,也可以自己集成一些框架

    • 方便进行事务管理:提供了一致的事务管理接口,可向下扩展到本地事务(使用单一的数据库)并扩展到全局事务(JTA)

    • 降低API的开发难度:Spring封装了一些非常难用的API(JDBC、JavaMail、远程调用等)

Spring的四大核心组成:IOC、AOP、JDBC、WEB

Spring的组件

下图来源于Spring官网,但是依旧是V4的版本图,在5中做了一系列的改动,例如:移除了portlet组件、增加了jcl日志管理组件,新增了WebFlux模块等

在这里插入图片描述

Test模块

Spring支持Junit和TestNG测试框架,而且还额外提供了一些基于Spring的测试功能,比如在测试Web框架时,模拟Http请求的功能

**Test模块(spring-test)**主要包含:

  • Mock Objects

  • TestContent Framework

  • Spring MVC Test

  • WebTestClient
    源码包
    在这里插入图片描述

Core Container模块

Core Container是Spring的核心容器,由Beans模块、Core模块、Context上下文模块和SpEL表达式语言模块组成

Beans模块(spring-beans):提供了框架的基础部分,包括控制反转和依赖注入

Core核心模块(spring-core):封装了Spring框架的底层部分,包括资源访问、类型转换及一些常用的工具类

Context模块(spring-context、spring-context-xxx):建立在Core和Beans模块的基础之上,集成Beans模块功能并添加资源绑定、数据验证、国际化、JavaEE支持、容器生命周期、事件传播等。ApplicationContext接口时上下文模块的焦点

SpEL模块(spring-expression):提供了强大的表达式语言支持,支持访问和修改属性值,方法调用、支持访问及修改数组、容器和索引器、命名变量、支持算数和逻辑运算、支持从Spring容器中获取Bean,它也支持列表投影、选择和一般的列表聚合等

在这里插入图片描述

对应的源码模块

AOP、Aspect、Instrumentation和Messaging模块

建立在Core Container模块之上是AOP、Aspect等模块,主要是用于提供一些开发框架

AOP模块(spring-aop):提供了面向切面编程实现,提供比如日志记录、权限控制、性能统计等通用功能和业务逻辑分离的技术,并且能动态的把这些功能添加到需要的代码中,这样各司其职,降低业务逻辑和通用功能的耦合

Aspect模块(spring-aspects):提供与AspectJ的集成,是一个功能强大且成熟的面向切面编程的框架

Instrumentation模块(spring-instrument):提供了类工具的支持和类加载器的实现,可以在特定的应用服务器中使用

message模块(spring-messaging):Spring4.0以后新增了消息模块,该模块提供了对消息传递体系结构和协议的支持

jcl模块(spring-jcl):Spring 5.x中新增了日志框架集成的模块
对应的源码模块
在这里插入图片描述

Data Access/Integration模块

数据访问/集成层包括JDBC、ORM、OXM、JMS和Transactions模块,用于提供持久层框架

JDBC模块(spring-jdbc):提供了一个JDBC的样例模版,使用这些模版能消除传统冗长的JDBC编码还有必须的事务控制,而且能享受到Spring管理事务的好处

ORM模块(spring-orm):提供与流行的对象关系映射框架无缝集成的API,包括JPA、JDO、Hibernate和Mybatis等。而且还可以使用Spring事务管理,无需额外控制事务

OXM模块(spring-oxm):提供了一个支持Object/XML映射的抽象层实现,如:JAXB、Castor、XMLBeans、JiBX和XStream。将Java对象映射成为XML数据,或者将XML数据映射为Java对象

JMS模块(spring-jms):指Java消息服务,提供一套生产者/消费者消息模版,用于简单的使用JMS。JMS用于在两个应用程序之间,或分布式系统中发送消息,进行异步通信

Transactions事务模块(spring-tx):支持编程和声明式事务管理
对应源码模块
在这里插入图片描述

Web模块

Spring的Web层包括Web、Servlet、WebSocket和WebFlux组件

Web模块(spring-web):提供了基本的Web开发集成特性,比如多文件上传功能、使用的Servlet监听器的IOC容器初始化以及Web应用上下文。

Servlet模块(spring-webmvc):提供了SpringMVC Web框架实现,SpringMVC框架提供了基于注解的请求资源注入更简单的数据绑定数据验证等以及一套非常易用的JSP标签,完全无缝与Spring其他技术协作

WebSocket模块(spring-websocket):提供了简单的接口,用于只要实现响应的接口就可以快速搭建WebSocket Server,从而实现双向通讯。

WebFlux模块(spring-webflux):Spring WebFlux是Spring Framework 5.x中引入的新的响应式web框架。与SpringMVC不同,它不需要Servlet API,是完成异步且非阻塞的,并且通过Reactor项目实现了Reactive Streams规范。Spring WebFlux用于创建基于事件循环执行模型的完成异步且非阻塞的应用程序。

对应的源码模块在这里插入图片描述

Spring 5.x移除的模块:

Portlet模块:提供了在Portlet环境中使用MVC实现,类似Web-Servlet模块的功能

  • 16
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Carl·杰尼龟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值