Java技术干货Java学习笔记

【JavaWeb学习笔记之Spring学习】Spring概念入门

2017-07-31  本文已影响209人  cuifengli

本文根据极客学院的《Spring之IOC》视频课程编写。

Spring概况

Spring是一个轻量级控制反转(IOC)和面向切面(AOP)的容器框架,主要是为了解决企业应用开发的复杂性而诞生的。

Spring的起源 Spring的优点 Spring的优点给开发带来的好处 Spring的特点 Spring的核心模块 Spring概况总结

Spring之IOC

1. IOC开发模式和和传统开发模式之间的区别:

2.IOC理论知识:

IOC理论背景

把中间的IOC容器拿掉,就是我们要实现整个系统所完成的全部内容。此时,ABCD四个对象之间没有了耦合关系毫无联系。 这样,当我们实现A的时候,无需考虑其他几个对象。所以开发者只要实现自己的类就可以了。

在未引入IOC容器时,对象之间相互依赖。当对象A需要初始化或者运行到某一点时,自己必须生动的创建对象B,或者使用已有的对象B,控制权在自己手上。
引入IOC容器后,对象A和对象B之间失去了直接的联系。当对象A运行到需要对象B的时候,IOC容器会主动将一个对象B注入到对象A需要对象B的地方。
整个过程,对象A对对象B的控制从主动变成了被动,控制权颠倒。

3. IOC之依赖注入DI

依赖注入

4. IOC的好处

IOC在编程过程中不会对业务对象构成很强的侵入性。使用IOC之后,对象具有更好的可实行性,可重用性和可扩展性。

5. IOC的通俗理解

IOC控制反转:创建对象实例的控制权从代码控制剥离到IOC容器控制,实际就是在xml文件中控制,侧重于原理。
DI依赖注入:创建对象实例时,为这个对象注入属性值或其他对象实例,侧重于实现。

spring之AOP

1. 什么是AOP

-- 基本概念 Aspect-Oriented Programming,面向切面编程技术,将应用系统分为两个部分:核心业务逻辑,以及横向的通用逻辑(所谓的方面),例如持久管理。事务管理。安全管理、日志管理和调试管理等。在spring中,允许分离业务逻辑和系统级的服务进行内聚性的开发。应用对象只用完成业务逻辑。
-- AOP和OOP的关系 AOP是对面向对象OOP的有益的补充,也是对OOP的延续,是spring中的重要内容。OOP主要考虑实体、属性、类,研究的是一种静态的领域。OOP考虑的是程序动态运行的过程,针对业务处理过程中的切面进行提取,研究的是动态的领域。
-- AOP的主要功能 主要用于系统级别的功能。例如:日志记录、性能统计、安全控制、事务处理、异常处理等等。
-- AOP的主要意图 将日志记录、性能统计、安全控制、事务处理、异常处理等系统级功能,从业务逻辑中划分出来,通过对这些行为的分离,希望可以将他们独立到非指导性业务逻辑方法当中,进而改变这些行为的时候,不影响业务逻辑代码的处理。也就是说,AOP把常用的服务进行模块化,以声明的方式,将这些组件使用到其他的业务组件当中去。这使得,每一个业务组件只用关心自己的业务逻辑,不用了解常用的服务组件。保证了更高的内聚性。
AOP是软件开发发展中的下一个光环,可以有效防止代码混乱。spring框架是一个轻量级的AOP技术,无需使用预编译器或者其他语言标签,便可以在java代码中使用它。

2. AOP的存在价值

AOP的存在价值

系统有很多不同的组件,每一个组件负责特定的功能。我们希望每一个组件,只关心自身的核心功能。
但是系统中会有一些组件,比如日志模块、事务模块、安全模块,会比较频繁地融入到其他核心业务逻辑组件当中去。这些常用的组件会分散到其他多个组件当中。这会导致两个问题:如果这些常用的服务组件经常发生变化,我们需要在多个其他组件之中进行修改。另外,组件代码因为插入了和核心业务无关的其他服务组件,而变得很混乱。
如上图的图1,多个方法都用到了同一个代码段,通过复制粘贴的方式完成这一部分的开发。如果这个代码段需要修改,那么工作是重复而巨大的。
如上图的图2,我们将这个代码段封装成一个方法,三个代码当中只要分别调用这个方法就好了,这时如果需要修改深色代码段,只需要修改一次就好。大大降低了软件后期维护的复杂度。这种方式能够应付大部分应用场景。
但是还有一些特殊的情况,比如,应用需要三个方法彻底与深色方法相分离。在软件开发中,代码是需要经常修改的,客户随时可能提出新的需求。面对需求变更,如果定义一个新的方法,再修改这三个方法,增加新定义的方法工作量也是很大的。 我们希望定义一个方法,无需在三个方法中显示调用,系统能够自动的调用这个方法。实现这种方式的就是AOP技术。

3. AOP的原理剖析

AOP实际上由目标类的代理类实现,包含了目标对象的全部方法。但AOP代理中的方法与目标对象的方法存在着差异,AOP方法在特定的切入点添加了增强处理,并回调了目标对象的方法。

AOP的原理剖析

对于AOP编程,需要程序猿参与的有三个部分:

4. AOP的关键概念

spring官方文档对AOP一些关键概念的解释:

5. AOP的通俗理解

AOP的通俗理解

哪里有不对的地方,欢迎大家指正!

上一篇 下一篇

猜你喜欢

热点阅读