前言
作为刚学完javaweb基础的小白,下一步必然是进阶java框架部分,而说到框架,大家首先想到的肯定是ssm框架,那么就从最基础的spring开始慢慢剖析这个框架。
从简介理解spring
Spring 是一个开源框架,Spring 为简化企业级应用开发而生。使用 Spring 可以使简单的 JavaBean 实现以前只有 EJB 才能实现的功能。Spring 是一个 IOC(DI) 和 AOP 容器框架。
作为一个刚刚略懂java的小白来说,看这么一段官方或者说专业性较强的话来说肯定很头疼吧hhhh(比如说我),那就让我们一层层来剥开。
EJB
我们先看一下,EJB 的官方解释:
商务软件的核心部分是它的业务逻辑。业务逻辑抽象了整个商务过程的流程,并使用计
算机语言将他们实现。
用通俗的话来说就是把执行特定任务的类进行封装并且放到服务器上,而不是像往常一样和客户端集合在一起。而spring的存在就是将此过程简化,可以直接用javaBean实现该功能。
IOC
IOC全程是Inversion of Control,简单点就翻译为“控制反转”
IOC容器通俗来说,就是作为一个第三方来对系统中的其他对象进行粘合,使得如图所示的ABCD四个对象并没有那么强的依赖关系,这在开发过程中就可以让每个部分独立开发,最后通过IOC进行整合。
那么再来从IOC这个名字进行入手,为什么是控制反转?
在没有IOC之前,系统中各个对象之间应该都是存在依赖关系,可以想象成机械表的内部构造,各个齿轮相互耦合而进行工作,这个过程是各个齿轮之间主动取得依赖关系。而引入IOC之后,每个部分的依赖就没有那么强,因此获得依赖关系就让IOC来管理,因此控制反转了,或者说由主动变成了被动。说到这,就引出了另一个概念,叫做“依赖注入”。
DI
DI也可以说是IOC,也就是依赖注入,正如上文所描述的,其实IOC所做的事情就是将原本独立的各个对象之间创造一种联系,最终使其互相耦合进行工作,这一过程其实就是依赖注入。
AOP
官方定义:在软件业,AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。AOP是OOP的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生范型。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。
这么看下来号好像一脸懵逼,这是说了个啥?
让我们来通俗翻译一下,在我们编程的过程中是不是会出现这种情况,在处理相同业务或者是相同逻辑时有很多代码重复,这就要多次copy同样的代码,这样就很麻烦。
那么这个时候有人就说了,java为了提高代码的复用不是可以通过继承或者重写的方式吗?
但是如果我们要让这个业务处理动态起来,在某个方法前面或者后面甚至是中间进行插入一个业务逻辑,这样看来继承好像就无法实现。这就诞生了面向切面编程,可以通俗理解为我们把几个相同业务逻辑处理的方法全部封装进一个类中,在我们需要的时候直接进行调用,在需要调整的时候直接修改这个类就可以,而不是因为继承了父类而直接去改其中的方法。