Spring有哪些特性

本篇内容介绍了“Spring有哪些特性”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

Spring了解

简而言之Spring是Java目前第一大框架,雏型是一个音乐博士发明到interface21,Spring框架是由于软件开发的复杂性而创建的,Spring的用途不仅仅限于服务器端的开发。从简单性、可测试性和松耦合性角度而言,绝大部分Java应用都可以从Spring中受益,Spring是一个全面的解决方案,它坚持一个原则:不从新造轮子。已经有较好解决方案的领域,Spring绝不重复性实现,比如:对象持久化和OR映射,Spring只对现有的JDBC,Hibernate等技术提供支持,使之更容易使用,而不做重复的实现。Spring框架有很多特性,Spring官网给出对Spring提供的功能如下:

Spring make java more simple
Spring make java more modern
Spring make java more reactive
Spring make java more productive
Spring make java more cloud-ready

用人话来说就是

  1. 让现有的技术更容易使用,

  2. 促进良好的编程习惯。

  3. 大大简化应用程序的开发。

Spring特性如下:

Spring有哪些特性

Spring框架

Spring框架是分模块存在,除了最核心的Spring Core Container(即Spring容器)是必要模块之外,其他模块都是可选,视需要而定。大约有20多个模块。

Spring有哪些特性


一般来说,Spring主要分为7个模块:

Spring有哪些特性


Spring框架有很多特性,这些特性由7个定义良好的模块构成。

Spring有哪些特性

  1. Spring Core:Spring核心,它是框架最基础的部分,提供IOC和依赖注入特性。

  2. Spring Context:Spring上下文容器,它是BeanFactory功能加强的一个子接口

  3. Spring Web:它提供Web应用开发的支持

  4. Spring MVC:它针对Web应用中MVC思想的实现

  5. Spring DAO:提供对JDBC抽象层,简化了JDBC编码,同时,编码更具有健壮性。

  6. Spring ORM:它支持用于流行的ORM框架的整合,比如:Spring + Hibernate、Spring + iBatis、Spring + JDO的整合等。

  7. Spring AOP:AOP即,面向切面编程,它提供了与AOP联盟兼容的编程实现。

主要的Jar包如下(借鉴了大佬图):

Spring有哪些特性

Spring优点

Spring提供了良好的代码组织逻辑跟业务开发流程规范框架,因为如果我们要实现一个功能,代码量一般都是固定的,要不我们全自己写,要不我们用优秀的已经写好的各种组件,Spring就已经给我们提供了各种优秀组件,主要优点如下:

  1. IOC跟DI的支持

Spring就是一个大工厂(容器),可以将所有对象创建和依赖关系维护,交给Spring管理
spring工厂是用于生成bean,并且管理Bean的生命周期,践行着高内聚低耦合的设计理念。

  1. AOP编程的支持

Spring提供面向切面编程,可以方便的实现对程序进行权限拦截、运行监控等功能

  1. 声明式事务的支持

只需要通过配置就可以完成对事务的管理,而无需手动编程,以前重复的一些JDBC操作,统统不需我们再写了。

  1. 方便程序的测试

Spring对Junit4提供支持,可以通过注解方便的测试Spring程序。

  1. 粘合剂功能

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

  1. 降低JavaEE API的使用难度

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

Bean

在Spring中POJO(Plain Ordinary Java Object)简单的Java对象,实际就是普通JavaBeans。
JavaBean中的这个bean是豆荚的意思,顾名思义,JavaBean设计者的初衷是就是让这个类体现豆荚的封装性(豆荚把豌豆都封装在里面了)。JavaBean 类也是一个类,只不过这个类有一些特殊的特性而已如下:

1.如果类的成员变量的名字是xxx,那么为了更改或获取成员变量的值,即更改或获取属性,在类中可以使用两个方法:
java getXxx(),用来获取属性xxx。 setXxx(),用来修改属性xxx.。
2. 对于 boolean 类型的成员变量,即布尔逻辑类型的属性,允许使用is代替上面的get和set。
3. 类中方法的访问属性都必须是public的。
4. 类中如果有构造方法,那么这个构造方法也是public的并且是无参数的(个人感觉没那么严格)。

说白了JavaBean无非就是面向对象封装的一种良好体现,比如一般情况下 我们将实现业务的基本单元 比如person、dog等类,拥有年龄,身高,体重等基本属性。我们将这些基本属性封装成一个整体类,然后用逻辑判断层来处理这样的整体类。

核心思想

提到Spring永远离不开的两个话题就是 IOC跟AOP,先简单说下这两个词的概念:

IOC

SpringIOC核心就是 反射 + xml解析,
IOC容器(Inversion of Controller) 控制反转,Java思想是面向对象的开发,一个应用程序是由一组对象通过相互协作开发出的业务逻辑组成,那么如何管理这些对象,使他们高效地协作呢?抽象工厂、工厂方法设计模式”可以帮我们创建对象,生成器模式帮我们处理对象间的依赖关系,不也能完成这些功能吗?可是这些又需要我们创建另一些工厂类、生成器类,我们又要而外管理这些类,增加了我们的负担。所以用另外的方式,如果对象需要的时候,就自动地生成对象,不用再去创建。

举个例子:原来我们饿了,就要自己买各种东西做饭,但是现在有了外卖之后,就可以订餐了,我们可以把我们的需求告诉美团,让他们给我们送饭。这里主导关系发生了变化,原来是我们自己,但是现在是美团。

Spring提出了一种思想:就是由Spring来负责控制对象的生命周期和对象间的关系。所有的类都会在Spring容器中登记,告诉Spring你是个什么东西,你需要什么东西,然后Spring会在系统运行到适当的时候,把你要的东西主动给你,同时也把你交给其他需要你的东西。所有的类的创建、销毁都由spring来控制,也就是说控制对象生存周期的不再是引用它的对象,而是spring。对于某个具体的对象而言,以前是它控制其他对象,现在是所有对象都被spring控制,所以这叫控制反转,在Spring代码中很难看到new 对象这样的操作了。

AOP

AOP(Aspect Oriented Programming)称为面向切面编程,有点方法增强的意思。AOP的核心其实就是动态代理。
设想下比如进行一个计算器的编写,需要实现加减乘除的运算,编写四种不同的方法。还有另外的两个需求是在每种运算之前和运算之后需要打印日志进行记录,需要进行数字合规的校验。我们就得考虑如何能简单地实现呢?

  1. 日志记录数据校验可重用的功能模块分离出来,然后在程序的执行的合适的地方动态地植入这些代码并执行。这样就简化了代码的书写。
    业务逻辑代码中没有参和通用逻辑的代码,业务模块更简洁,只包含核心业务代码。实现了业务逻辑和通用逻辑的代码分离,便于维护和升级,降低了业务逻辑和通用逻辑的耦合。

Spring通过配置的方式,而且不需要在业务逻辑代码中添加任何额外代码,就可以很好地实现上述功能。以上这种方式就是spring中实现的AOP:意思是面向切面编程,提供从另一个角度来考虑程序结构以完善面向对象编程(相对于OOP),在编译期间、装载期间或运行期间实现在不修改源代码的情况下给程序动态添加功能的一种技术。

人话:通俗点说就是把可重用的功能提取出来,然后将这些通用功能在合适的时候织入到应用程序中(以前跟过AOP代码好像是动态的在内存中组织处切面代码跟业务代码融合最终生成可执行代码);比如安全,日记记录,这些都是通用的功能,我们可以把它们提取出来,然后在程序执行的合适地方织入这些代码并执行它们,从而完成需要的功能并复用了这些功能。

发展史

Spring FrameworkJDK
1.x1.3:引入了动态代理机制,AOP 底层就是动态代理,所以 Spring 必须是 JDK 1.3
2.x1.4:正常升级
3.x5: 引入注解,Spring 3 最低版本是 Java 5 ,从此以后不叫1.x 直接叫x
4.x6: Spring 4 是有划时代意义的版本,开始支持 Spring Boot 1.X
5.x8:lambda 表达式等功能

目前Java 开发的标配: Spring Framwork 5、Spring Boot 2、JDK 8。

“Spring有哪些特性”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程之家网站,小编将为大家输出更多高质量的实用文章!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


这篇文章主要介绍了spring的事务传播属性REQUIRED_NESTED的原理介绍,具有一定借鉴价值,需要的朋友可以参考下。下面就和我一起来看看吧。传统事务中回滚点的使...
今天小编给大家分享的是一文解析spring中事务的传播机制,相信很多人都不太了解,为了让大家更加了解,所以给大家总结了以下内容,一起往下看吧。一定会有所收获...
这篇文章主要介绍了SpringCloudAlibaba和SpringCloud有什么区别,具有一定借鉴价值,需要的朋友可以参考下。下面就和我一起来看看吧。Spring Cloud Netfli...
本篇文章和大家了解一下SpringCloud整合XXL-Job的几个步骤。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。第一步:整合pom文件,在S...
本篇文章和大家了解一下Spring延迟初始化会遇到什么问题。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。List 坑列表 = new ArrayList(2);...
这篇文章主要介绍了怎么使用Spring提供的不同缓存注解实现缓存的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇...
本篇内容主要讲解“Spring中的@Autowired和@Resource注解怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学...
今天小编给大家分享一下SpringSecurity怎么定义多个过滤器链的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家
这篇文章主要介绍“Spring的@Conditional注解怎么使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Spring的@Con...
这篇文章主要介绍了SpringCloudGateway的熔断限流怎么配置的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇SpringCloud&nb...
今天小编给大家分享一下怎么使用Spring解决循环依赖问题的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考
这篇文章主要介绍“Spring事务及传播机制的原理及应用方法是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Sp...
这篇“SpringCloudAlibaba框架实例应用分析”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价
本篇内容主要讲解“SpringBoot中怎么使用SpringMVC”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习...
这篇文章主要介绍“SpringMVC适配器模式作用范围是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“SpringMVC
这篇“导入SpringCloud依赖失败如何解决”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家...
这篇文章主要讲解了“SpringMVC核心DispatcherServlet处理流程是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来
今天小编给大家分享一下SpringMVCHttpMessageConverter消息转换器怎么使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以...
这篇文章主要介绍“Spring框架实现依赖注入的原理是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Spring框架...
本篇内容介绍了“Spring单元测试控制Bean注入的方法是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下