ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Spring介绍

2021-12-04 21:00:12  阅读:154  来源: 互联网

标签:容器 对象 Spring 筷子 介绍 AOP IOC


我们现在来接触一个新的框架---Sping,同样,在学习这个知识点之前,我们先搞懂两个问题:

Spring是什么?

Spring有什么用?

目录

1.Spring是什么?

1.1什么是控制反转IOC?

1.2什么是面向切面AOP?

2.Spring有什么用?


1.Spring是什么?

Spring是一个容器框架,用来装javabean(java对象),中间层框架可以起一个连接作用。

一句话概括:Spring是一个轻量级的控制反转(IOC)和面向切面(AOP)的容器框架。

1.1什么是控制反转IOC?

  • 在谈反转之前,我们先来谈一下“正转”,正转即在任何一个有请求作用的系统当中,至少需要有两个类互相配合工作,例如在一个A类中,希望去操作B类,那么需要在A类中new一个B类的对象实例,例如以“我”充当一个入口类,我每次吃饭的时候都需要买一双一次性筷子,即每一次使用都需要new一次,在这样的关系中,是“我”(调用者)每次都要主动去买一双一次性筷子(每次使用都需要new一下),然后筷子才能到我手上,是我控制了筷子。这种情况就是正转
  • 反转就是,我去超市买一双筷子,注意这双筷子不是一次性的,我把这双筷子放到一个容器里(在Spring中称其IOC容器),然后以后需要筷子的时候,就跟容器说:IOC,我想要筷子(向容器发出请求),筷子就会“注入”到我手上,在这个过程,我不再是控制方,而是成为一名请求者(本身还是调用者)依赖于容器给予资源,控制权落到了容器上,这就是控制反转

1.2什么是面向切面AOP?

一句话概括:在运行时,动态地将代码切入到类的指定方法、指定位置上的编程思想。

例如:有三个人,儿子,爸爸,爷爷,自然就是儿子继承爸爸,爸爸继承爷爷,这三者一生都会经历入学,工作,结婚等阶段,而现在我们需要记录这三者的每个人生阶段发生的时间节点,只能在每个阶段发生时刻记录一下,这就是最简单的日志功能。根据面向对象(OOP)的思想,必然会导致代码的重复性,并且以“入学”为例,“入学”应该只需要知道入学本身的步骤,比如:体检,面试,交学费。而不是: 记录开始时间,体检,面试,交学费,记录结束时间

日志功能对于各个函数而言都应该是透明的,函数本身只需要实现核心关注点即业务逻辑本身,这些散落在各个方法核心功能上,却又与核心业务逻辑无关的功能,便是横切关注点。AOP的出现就可以把那些与业务逻辑无关的,却被各个业务模块大量调用的逻辑给封装起来,可以动态地将代码切入到类的指定方法、指定位置上,进而便于减少系统的重复代码量,并且能够降低模块间的耦合度,并有利于未来的扩展和维护,降低了维护成本,使各个函数本身只关注了核心业务逻辑。

2.Spring有什么用?

Spring可以将Bean对象,Dao组件对象,Service组件对象等交给Spring容器来管理,这样使得很多复杂的代码在Spring中开发却变得非常的优雅和简洁,有效的降低代码的耦合度,极大的方便项目的后期维护、升级和扩展

Spring特点

(1)非侵入式:基于Spring开发的应用中的对象可以不依赖于Spring的API。

(2)控制反转:IOC——Inversion of Control,指的是将对象的创建权交给Spring去创建。使用Spring之前,对象的创建都是由我们自己在代码中new创建。而使用Spring之后。对象的创建都是由给了Spring框架。

(3)依赖注入:DI——Dependency Injection,是指依赖的对象不需要手动调用setXX方法去设置,而是通过配置赋值。

(4)面向切面编程:Aspect Oriented Programming——AOP

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

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

(7)一站式:在IOC和AOP的基础上可以整合各种企业应用的开源框架和优秀的第三方类库(实际上Spring 自身也提供了表述层的SpringMVC和持久层的Spring JDBC)
 



以上就是一心同学对Spring的理解,如果有哪些地方理解错误的,欢迎指出来,大家共同进步,而对于Spring这个框架该怎么使用,一心同学将在接下来的博客里会用通俗易懂的文笔来进行讲解。

标签:容器,对象,Spring,筷子,介绍,AOP,IOC
来源: https://blog.csdn.net/Huang_ZX_259/article/details/121721299

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有