对Spring中的IOC与AOP简单理解(简单的理解,通俗易懂)

IOC与AOP是Spring中的核心;IOC是控制反转,AOP是面向对象编程,IOC采用了工厂设计模式,AOP采用了代理设计模式。
一、IOC
IOC是控制反转,而控制反转是一种思想,而DI是依赖注入,是IOC的实现,DI有构造注入、属性注入(设值注入)(基于注解的方式或者基于XML的方式)。在项目程序中,频繁的去手动创建对象,new对象使得代码间耦合度太大,而Spring提供了容器,通俗的讲:你无需知道对象的创建过程,只需从其中拿到结果就可以了;把对象的创建以及各个对象间的关系还有对象的销毁交给Spring容器去管理,在实际代码中无需去手动new 对象,只要从Spring容器中直接拿对象来使用,这就IOC控制反转;Spring通过反射以及对XML配置映射或者注解的形式来管理对象。
二、AOP
AOP是面向切面编程,它也是对OOP面向对象编程的补充;AOP的实现原理核心就是动态代理;我们知道面向对象不同于面向过程,我们专注对对象的开发,万事万物皆对象,那么在面向某个对象的时候,需要在这个对象至上而下执行前,执行后,或者至上而下执行某个方法前后,以及这个对象至上而下执行中出现异常等,我们都需要进行系统级业务操作,我们直接在执行过程中或者直接在代码执行至上而下顺序过程加上所需代码吗?这就不是完全的面向对象了,而又成了面向过程了,而代码间的耦合度增大了,这时候我们需要对面向对象进行补充,AOP面向切面,把这个对象所存在的范围可以称为切面,所需执行目标对象称为切点,在切点前执行的,从左向右的横切进来执行的,称为前置通知(增强),当然以此类推有后置通知,环绕通知,异常通知,以及最终通知,通知也可以叫作增强,对这个切面,切点的增强;这里有些抽象了,想要理解我的话,可以看我的动态代理先去理解动态代理。
OOP将应用程序分解成各个层次的对象,而AOP将程序分解成多个切面,OOP引入封装、继承和多态性等概念来建立一种对象层次结构,用以模拟公共行为的一个集合。当我们需要为分散的对象引入公共行为的时候,OOP则显得无能为力。也就是说,OOP允许你定义从上到下的关系,但并不适合定义从左到右的关系。例如日志功能。日志代码往往水平地散布在所有对象层次中,而与它所散布到的对象的核心功能毫无关系。
在OOP设计中,它导致了大量代码的重复,而不利于各个模块的重用。将程序中的交叉业务逻辑(比如安全,日志,事务等),封装成一个切面,然后注入到目标对象(具体业务逻辑)中去。 实现AOP的技术,主要分为两大类:一是采用动态代理技术,利用截取消息的方式,对该消息进行装饰,以取代原有对象行为的执行;二是采用静态织入的方式,引入特定的语法创建“方面”,从而使得编译器可以在编译期间织入有关“方面”的代码.
在spring中,未来使IoC方便地使用健壮、灵活的企业服务,需要利用spring AOP实现为IoC和企业服务之间建立联系。

原文地址:https://www.cnblogs.com/zhangsonglin/p/10925554.html

时间: 2024-10-06 22:00:38

对Spring中的IOC与AOP简单理解(简单的理解,通俗易懂)的相关文章

Spring中的IOC和AOP

一.IOC(DI) Inversion of Control 控制反转,也叫(Dependency Injection)依赖注入. 我们平常使用对象的时候,一般都是直接使用关键字类new一个对象,那这样有什么坏处呢?其实很显然的,使用new那么就表示当前模块已经不知不觉的和 new的对象耦合了,而我们通常都是更高层次的抽象模块调用底层的实现模块,这样也就产生了模块依赖于具体的实现,这样与我们JAVA中提倡的面向接口面向抽象编程是相冲突的,而且这样做也带来系统的模块架构问题. 很简单的例子,我们在

理解Spring中的IOC和AOP

我们是在使用Spring框架的过程中,其实就是为了使用IOC,依赖注入和AOP,面向切面编程,这两个是Spring的灵魂. 主要用到的设计模式有工厂模式和代理模式 IOC就是典型的工厂模式,通过sessionfactory去注入实例. AOP就是典型的代理模式的体现. 代理模式是常用的java设计模式,他的特征是代理类与委托类有同样的接口,代理类主要负责为委托类预处理消息.过滤消息.把消息转发给委托类,以及事后处理消息等.代理类与委托类之间通常会存在关联关系,一个代理类的对象与一个委托类的对象关

spring中的ioc和aop概念

众所周知,现在最流行的三大框架就是Spring.Spring MVC和Mybatis.使用Spring,主要是方便了普通的程序员进行快速开发. 控制反转(IOC,Inversion Of Controll) 控制反转指的是对象创建责任的反转.原本我们需要创建一个对象必须要手动去new一个,那么在类中由于代码越来越多,需要管理的依赖和引用也会越来越多,代码维护的成本也会越来越高.Spring就把创建对象的控制权交给了IOC容器去完成. 举个例子,某一天你生病了,但是你不清楚自己到底得了什么病,你只

Spring入门导读——IoC和AOP

和MyBatis系列不同的是,在正式开始Spring入门时,我们先来了解两个关于Spring核心的概念,IoC(Inverse of Control)控制反转和AOP()面向切面编程. 1.IoC(Inversion of Control)控制反转 什么是控制反转呢?可以这么通俗的来解释,我们通常写代码当一个类会关联另一个类是会直接在这个类里new,例如: 1 package day_30_spring; 2 3 /** 4 * @author 余林丰 5 * 6 * 2016年10月30日 7

java server之spring中的IOC如何用java实现?

** 什么是IOC? 一般的对象耦合是在编译时确定的,也就是说当我们写如下类: public class StaticCoupling { String s = new String("hzg1981"); } 的时候,类StaticCoupling在编译期间就跟String类耦合在了一起. 在代码静态分析时,就可以确认它们之间的耦合. 而IOC 则是在运行期间才使用assembler object绑定需要耦合的对象.绑定过程是由依赖注入(DI)实现的.需要注意的是IOC和DI是有区别

用IDEA详解Spring中的IoC和DI(挺透彻的,点进来看看吧)

用IDEA详解Spring中的IoC和DI 一.Spring IoC的基本概念 控制反转(IoC)是一个比较抽象的概念,它主要用来消减计算机程序的耦合问题,是Spring框架的核心.依赖注入(DI)是IoC的另外一种说法,只是从不同的角度描述相同的概念.看完这两句,是不是不但没懂,反而更迷惑了,别急,往下看: IoC的背景 我们都知道,在采用面向对象方法设计的软件系统中,它的底层实现都是由N个对象组成的,所有的对象通过彼此的合作,最终实现系统的业务逻辑. 如果我们打开机械式手表的后盖,就会看到与

理解Spring中的IoC和DI

什么是IoC和DI IoC(Inversion of Control 控制反转):是一种面向对象编程中的一种设计原则,用来减低计算机代码之间的耦合度.其基本思想是:借助于"第三方"实现具有依赖关系的对象之间的解耦. DI(Dependence Injection 依赖注入):将实例变量传入到一个对象中去(Dependency injection means giving an object its instance variables). 控制反转是一种思想 依赖注入是一种设计模式 I

看完这篇你还敢说,不懂Spring中的IoC容器?

一. 什么是IoC 什么是耦合和内聚 耦合指的就是模块之间的依赖关系.模块间的依赖越多,则表示耦合度越高,相应的维护成本就越高.内聚指的是模块内功能之间的联系.模块内功能的联系越紧密,则表示内聚度越高,模块的职责也就越单一.所以在程序开发中应该尽量的降低耦合,提高内聚.也就是设计原则中的开闭原则和单一职责原则. 工厂模式 工厂模式就是用来解决程序间耦合的一种设计模式.可以把所有要创建的对象放在工厂的一个集合里,当需要使用这个对象的时候,直接从工厂里面取出来用就行. 工厂模式的优点: 一个调用者想

Spring AOP报错处理 Can not set field to $Proxy 在spring中使用事物或AOP遇到的错误

[转] 解决方法: http://forum.springsource.org/showthread.php?85016-IllegalArgumentException-with-ApplicationContextAware-Proxy 在配置文件中加入proxy-target-class="true" <tx:annotation-driven transaction-manager="transactionManager" proxy-target-c