什么是AOP?怎么理解AOP与IOC?

整理了半天的文档,就知道AOP是面向切面编程降低耦合度的。求大神解答

0

3个回答

按我片面的理解,面向对象是纵向变成,aop就是横线编程;

1
qq_35848291
一个菜鸟怎么了 还是没明白
接近 2 年之前 回复

直接描述一下应用场景吧,然后自己慢慢理解。首先所谓面向切面编程你要理解他是要切哪里。而切的这个地方有什么特点。如果我要切这里,
是不会给我省下大量的重复性的代码。因为切的目的就是为了减少工作,规范流程。那么从最简单的控制数据库的事物开始。正常操作。我们要各种
tranction begin commit rollback,几乎每个业务里面都避免不了这些代码。那我们要切的地方,就是数据库操作,特点就是有事物开关。目的就是省去
手动控制事物。当然比如我想控制日志啊,记录操作记录登录记录啊。。这些需求我们就都可以切进去了。
如果从代码上的理解。简单的说你可以把每个事件分解成 before doing after,你要控制一个通用的逻辑在某一个位置上。

1
Himly_Zhang
Himly_Zhang 回复一个菜鸟怎么了: 所以你不多了解这些东西,就是会用的话,你就成不了项目经理,做程序尤其做技术必须站位高,毕竟吃青春饭,混几年就没什么可吃了。
接近 2 年之前 回复
qq_35848291
一个菜鸟怎么了 之前开发都是项目经理搭好框架,设计完数据库,我们根据需求直接开发。现在发现了好多都不懂,没有理解。前两天面试问到IOC和AOP我就蒙了,只知道依赖注入,控制反转和降低耦合性
接近 2 年之前 回复

个人理解

IOC:控制反转(DI依赖注入),将以前由我们自己手动创建对象的过程交给了Spring,Spring帮助我们生产对象、管理对象、管理对象和对象之间的依赖关系。降低了代码的耦合度,方便我们后期对项目做维护。

三种注入方式:
1.setter注入
2.构造器注入
3.属性注入(注解)
@Autowired:默认根据类型进行匹配
@Resource:首先根据名称进行匹配,再根据类型进行匹配

自动装配autowire属性

AOP:面向切面(方便)编程,可以为某一类对象 进行监督和控制,也就是在调用这类对象的具体方法的前后去调用你指定的功能模块,从而达到对一个模块扩充的功能。可以通过注解或者XML文档进行实现。  

开发切面,切面里面写的功能模块,叫做通知。
前置通知@Before、后置通知@AfterReturning、最终通知@After、异常通知@AfterThrowing、环绕通知@Around

后置通知和最终通知的区别:
后置通知只有在方法正常执行后才会被调用,如果方法执行过程中报错,则不会执行后置通知,而是执行异常通知。
无论方法执行有没有报错,都会执行最终通知

AOP最重要的一个应用:Spring的事务管理器。

Spring的事务管理器就是一个切面,切面中的功能不再是计算时间、输出日志,而是管理事务。因为Spring的事务管理器要对一组数据库操作做事务控制。所以事务管理器需要切入到一个可以包含所有Dao操作的方法中,即Service方法。

Spring事务管理器的特点:所有的事务,要么同时提交,要么同时回滚。只要有一次失误失败,所有事务一起回滚。
JDBC事务的特点:每执行完一次数据库操作就提交一次事务。

1
qq_35848291
一个菜鸟怎么了 我得花点时间消化你说的东西
接近 2 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
IOC与AOP的理解
学习Spring框架:    1.理解“控制反转“        控制反转,也称为依赖注入,是面向对象编程中的一种设计理念,用来降低程序代码之间的耦合度。       程序的耦合:            调用者与被调用者的依赖关系       比如:程序员A负责编写A类,程序员B负责B类开发,A类的某些功能需要实例化B类的对象调用其方法才能完成,那么A类就依赖B类,如果程序员B不写B类 难道程序员...
对Spring Ioc和AOP的理解
Ioc和AOP是Spring的两大核心,面试的时候也经常被问及对这两个概念的理解,因此也记下我对此的理解,方便以后查漏补缺。 nnnnn一、控制反转(Ioc, Inversion of Controll)nn  所谓控制反转,即由Spring来负责控制对象的生命周期和对象间的相互关系。通常,在实现一个业务逻辑时需要多个对象相互协作来完成,每个对象在使用它的协作对象时都要通过new Obeject(...
Spring中IOC与AOP的理解
关于IOC我们知道是Spring中很重要的组合部分,下面就IOC的理解写一点自己的心得:rn1.IOC是什么?rnIOC也称控制反转,其实是和依赖注入的含义是一样的,就是把原先控制代码对象的生产由代码转换到IOC容器中去实现。作用是为了解耦,降低类之间的耦合度,其设计思想就是设计模式的工厂模式,不懂什么是工厂模式的点击此:。。。。。,我们并不需要知道其生产的具体过程,我们只要其产出的对象即可。其工
关于对Spring中IOC与AOP的理解
关于对Spring中IOC与AOP的理解rnSpring框架用过很多次,一直对它的一些功能不是很了解,最近仔细研究了一下。rnIOC(控制反转):控制反转,顾名思义就是一个控制权的转向问题,就比如皇帝管着臣子,有一天有一个臣子篡权夺位,臣子开始管理皇帝和其他人,这就一个控制反转。有反转就意味着有正转,正转就是哪里需要对象,就在哪里去new对象。例如:老师想要获得学生的英语成绩,那就要new学生对象
对于spring中IOC和AOP的理解及代码简单实现
IoC(Inversion of Control):rn在传统的java程序编写中如果调用方法或类者,必须要对被调用者进行实例化,即必须要通过new 被调用者类,才能对被调用者类中的方法、成员进行操作。在开发某一个项目时必然会出现很多类来完善项目的需求,并且类与类之间有很多的交互和依赖,代码将会很变得很难高度耦合和有效的维护。spring中的IoC便解决了这一问题。IoC即控制反转,它主要是将控制权...
理解Spring的AOP和Ioc/DI就这么简单
本文以通俗易懂的例子阐述了什么是AOP、Ioc、DI,相信读者看了之后会很容易明白nAOP —— Asepct-Orentid-Programming,面向切面编程nn 那么我们该怎么理解AOP呢?我们可以通过OOP —— 面向对象编程来进行比较分析nn 相信大家对于OOP的理解不难,就以人(people)来说,我们就可以把它看做一类对象,people有身高、体重、年龄等属性,也有跑步、吃饭、睡觉、娱乐等行为,把这些属于people的属性和行为封装在people类中,然后以统一调
对 Spring 的核心(AOP 和 IOC)的理解(大白话)
Spring  首先它是一个开源而轻量级的框架。其核心容器的主要组件是Bean工厂(BeanFactory)。Bean工厂使用控制反转(IOC)模式来降低程序代码之间的耦合度,并提供了面向切面编程(AOP)的实现。  正如其字面意思,是程序员的春天,大大地降低了体力劳动~  Spring 常用注解  1、@Component : 组件。标识这是个受 spring 管理的组件。(当组件不好归类时使用...
Spring IOC、AOP的理解和实现的原理
一、 IOC:反转控制 ,创建对象的方式反转了,从自己创建变成了spring容器nnDI(具体的技术):依赖注入,将必须的属性注入到对象当中,是实现ioc思想必须条件。 n nn二、AOP:面向切面编程(横向重复、纵向抽取)nn n n n ...
深入理解Spring两大特性:IoC和AOP
Java EE 目录:https://blog.csdn.net/dkbnull/article/details/87932809nn nn众所周知,Spring拥有两大特性:IoC和AOP。IoC,英文全称Inversion of Control,意为控制反转。AOP,英文全称Aspect-Oriented Programming,意为面向切面编程。nnSpring核心容器的主要组件是Bean工...
【JAVA】理解MVC模式,IOC , AOP, orm框架,SOA,ERP管理系统
以上6个是java程序开发中,企业面试,工作都用得上的知识点,rn这个帖子简单介绍,带大家理解这6个知识rnrnrn一、MVC设计模式:开发项目中,将代码分层:rnrnMVC:(模型model,视图view,控制器controller)开发项目中,将代码分层:rn之前的《图书信息管理系统》也解说过,其实也是基本的。rnaction控制层,dao数据库访问层,entity实体类,service业务逻
AOP与IOC概念
AOP与IOC的概念(即spring的核心)1.IOC:Spring是开源框架,使用框架可以使我们减少工作量,提高工作效率并且它是分层结构,即相对应的层处理对应的业务逻辑,减少代码的耦合度。而spring的核心是IOC控制反转和AOP面向切面编程。IOC控制反转主要强调的是程序之间的关系是由容器控制的,容器控制对象,控制了对外部资源的获取。而反转即为,在传统的编程中都是由我们创建对象获取依赖对象,...
Spring——控制反转(IOC)和面向切面(AOP)
可以将所有的对象创建和依赖关系维护交给Spring管理的AOP编程支持nnSpring 提供的切面编程可以方便的实现对程序进行权限拦截,运行监控等声明式事物的支持。nnSpring支持Junit4,方便测试。nnIOC的底层实现原理nnIOC将对象的创建权反转给Spring,实现程序的解耦合。nn nnspring是轻量级开源框架nn nn spring核心有两部分:nn(1)控制反转 ioc:n...
spring学习第一篇:控制反转(IOC)或依赖注入(DI)和面向切面编程(AOP)
spring相关的书和博文看了很多,一直也没明白依赖注入和面向切面编程到底是什么,spring企业实战看到第三遍突然恍然大悟,也许是因为之前动手写过代码,所以终于潜移默化,慢慢理解了吧。nnhttp://www.360doc.com/content/18/0125/09/27831725_724899826.shtml这篇文章写得挺好的nn首先控制反转和面向切面编程是spring的核心机制,由于控...
关于spring框架中的IOC/DI和AOP,以及声明式事务管理的理解
IOC/DI:中文意思控制反转/依赖注入,针对以前编程,类中的属性都是写死的,直接在程序中给成员变量初始化。这样的编程,耦合度太高,代码的灵活性和扩展性太差。spring的处理方式是,在配置文件中,将类中的需要初始化的成员变量罗列出来。在应用程序启动的时候,针对配置文件的配置,初始化对象。这些对象默认是Singleton的,保存在容器中(map中)。当类初始化的时候,从容器中取出。这样不仅不仅可以节
什么是SpringIoC?优点是什么?简述SpringAoP的原理和优点?
IOC:Inversion of Control控制反转,也叫(Dependency Injection)依赖注入。IoC 不是一种技术,只是一种思想。它能指导我们如何设计出松耦合、更优良的程序。比如在程序中,依赖注入就是利用某种工具,将依赖注入到需要的位置。就好比:nn药物注入就是利用注射器,将药物注入到需要的人体中,就是药物注入。nn依赖注入还有另一层意思:就是依赖第三方工具完成注入的操作。依...
SpringMVC学习笔记(一)——初步了解IOC,AOP,MVC和ORM
一直以来只专注于工作内容,由于工作经历的关系,一向对于框架不甚重视,认为框架反而束缚了自己的编码,近期由于被大连的某世界500强公司(既然是技术博文,这里不想无意义的黑,所以隐去名字)坑了一把,商定好的职位最后反而不发Offer,所以重新开始应聘,重新开始自我价值的评估.蓦然发现,自己的认识一直是存在问题的,存在即合理,目前各种形形色色的框架一直呈现一种向前发展的趋势,各种企业也在不停的倡导使用框架
简述Spring 的核心: IOC(控制反转)/AOP(面向切面)
IOC(控制反转) 就是将对象的控制权从代码交给xml  nn学生类npublic class Student{}nn传统的方法调用n Student st=new  Student ();n对比nn使用ioc 方法调用nnStudent st=  xml.getBean();nn具体代码:nnapplicationContext.xml:  <?xml version="1.0" enco...
面试——aop
一、什么是AOPAOP:大体可以理解为面向切面编程,详解可以百度:https://baike.baidu.com/item/AOP/1332219?fr=aladdin二、AOP是基于什么实现的AOP是基于动态代理实现的,而动态代理可以理解为动态执行方法,动态加载类。三、AOP在ssm框架中是如何执行的,怎么使用的反射机制我在我的项目业务层增加了一个空指针异常,来查看ssm框架如何调用从异常抛出的...
Spring学习,依赖注入(DI)、控制反转(IoC)和面向切面(AOP)
依赖注入DI和控制反转IoCnSpring容器中的依赖注入DI和控制反转IoCnxml配置n注解配置n面向切面AOPn面向切面的应用动态代理nSpring容器中的面向切面nxml配置n注解配置nSpring整合hibernate和AOP应用之声明式事务依赖注入(DI)和控制反转(IoC)在日常编码中经常遇到在一个类中调用另一个类的多个方法,所以就在一个类中new出需要用到的类,也就是组合模式。比如说
什么是IOC和什么是AOP
一、IOCnn首先:IOC(Inverse of Contro)控制反转,有时候也被称为DI依赖注入,它是一种降低对象耦合关系的一种设计思想。nn 1.概念引入:nn      1.1一般而言,在开发中使用分层体系结构,都是上层调用下层的接口,上层依赖下层的执行,这就使得调用者依赖被调用者。所以现在调用者和被调用者之间就错在紧密得联系,假如现在一方要进行变动,那么就会导致程序出现较大得变动,显然这...
Spring中IOC和AOP的实现原理
IOC:nnjava程序中的每个业务逻辑至少需要两个或以上的对象来协作完成,通常,在使用其他的合作对象时,均要使用像new object() 这样的语法来完成合作对象的申请工作。你会发现:对象间的耦合度高了。而IOC的思想是:Spring容器来实现这些相互依赖对象的创建、协调工作。对象只需要关心业务逻辑本身就可以了。从这方面来说,对象如何得到他的协作对象的责任被反转了(IOC、DI)。nnIOC是...
简述AOP和IOC的概念
AOP:面向(方面)切面的编程,Filter(过滤器)也是一种AOP,AOP是一种新的方法论,是对传统OOP的补充,AOP的主要编程对象是切面,而切面模块化横切关注点,可以举例通过事务说明IOC:控制反转也称为DI(依赖注入)其思想是反转资源获取的方向,传统的资源查找方式要求组件向容器发起请求查找资源,作为回应,容器适时的返回资源,而应用了IOC之后,则是容器主动的将推送给它所管理的组件,组件所要...
Spring的Ioc和AOP为内核详解,面试必问
Spring是分层的Java SE/EE应用一站式的轻量级开源框架,以及Ioc和AOP为内核,提供了展现层Spring MVC和持久层Spring JDBC以及业务层事务管理等众多的企业级应用技术,此外,Spring整合了开源世界里众多注明的第三方框架和类库。
什么是AOP和IOC,它们的作用是什么
rnnAOP :Aspect Oriented Programming (Action Oriented Programming) 面向切面编程,是软件开发中的一个热点,也是Spring框架中的一个重要内容。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提供程序的可重用性,同时提高了开发的效率。rnIOC :Inversion of Control 是一个重要...
JAVA面试之AOP与IOC解析
JAVA面试之AOP与IOCnAOP是Aspect Oriented Programming的缩写,意思是面向切面编程,与OOP(Object Oriented Programming)面向n对象编程对等,都是一种编程思想.n从OOP角度分析,我们关注业务的处理逻辑,是属于纵向的行为,从AOP角度分析,我们关注对象行为发生时的问题,是n属于横向的问题.AOP就是把贯穿在各个模块之间相同的功
SPRING AOC、AOP 概念详解
AOCrn依赖注入:就是通过容器来控制业务对象之间的依赖关系。也就是把需要的业务对象都放入容器中,需要注入时,通过反射技术来动态获取指定的对象,装配到当前使用对象。代替了原始的rn new 来实现对象的实例化。从而实现 AOC 的依赖注入。rn控制反转概念:就是通过容器来控制业务对象之间的依赖关系,而非传统实现中,由代码直接控制。这也就是“控制反转”概念所在;控制权由应用代码转到了外部容器,控制权
面试问spring aop ioc原理如何答
IOC:控制反转也叫依赖注入。利用了工厂模式rn 将对象交给容器管理,你只需要在spring配置文件总配置相应的bean,以及设置相关的属性,让spring容器来生成类的实例对象以及管理对象。在spring容器启动的时候,spring会把你在配置文件中配置的bean都初始化好,然后在你需要调用的时候,就把它已经初始化好的那些bean分配给你需要调用这些bean的类(假设这个类名是A),分配的方法就...
IOC和AOP的底层实现原理
在谈论IOC和AOP的底层实现原理前,先来阐述一下IOC和DI的区别。nnIoc和DI的区别:nn(1)Ioc:控制反转,把创建对象交给Spring进行配置nn(2)DI:依赖注入,向类里面的属性中设置值nn(3)二者关系:DI不能单独存在,要在Ioc基础之上来完成操作,即要先创建对象才能注入属性值。nn nnAOP底层实现:nn用动态代理机制和字节码生成技术实现 。   与最初的 AspectJ...
Ioc和AOP使用
使用Bean标签的注入方式rnrn设置注入rnrn<bean id="author" class="com.bdqn.cn.Author">rn <property name="name"
深入理解Spring的两大特征(IOC和AOP)
众所周知,Spring的核心特性就是IOC和AOP,IOC(Inversion of Control),即“控制反转”;AOP(Aspect-OrientedProgramming),即“面向切面编程”。参考书《Spring In Action》,下面分享一下我对这两大特性的个人理解。IOC:IOC,另外一种说法叫DI(Dependency Injection),即依赖注入。它并不是一种技术实现,而
Spring(1)Ioc和Aop底层原理
一、Ioc 通过Spring配置来创建对象,而不是new的方式n两种方法:配置文件,注解nnnn1.Ioc底层原理n(1)xml配置文件n(2)dom4j解析n(3)工厂设计模式n(4)反射n步骤:nnn第一步:创建类的.xml文件nnnn第二步:创建一个工厂类:使用dom4j解析配置文件+反射nnpublic class UserFactory{nnpu
深入浅出解读 Spring 源码:IOC/AOP 篇
还在机械地打代码?只知道如何使用,却不知道做了什么,那么你注定只能是一个码农。Spring 框架几乎集成一半 Javaweb 开发的江山,但是你只知道如何写,不知道为什么要这么写,也不知道要如何优化。n本场 Chat 将让大家了解 Spring 的运行原理、深度解析 IOC 和 AOP、最后你还可以自己写一个小型 Spring 框架!n实录提要:nn阅读源码的正确姿势/最佳实践是什么?nSprin...
Spring简述以及AOP、IOC
Springrnrn是SSH里面的一种Spring + Struts +Hibernate,如今MVC模式下的一种框架。rnrn应对需求快速变化,主要原因有一种面向切面编程(AOP)的优势。rnrnrnrnrn系统中用到的对象不在系统加载时就全部实例化,而是在调用时才会实例化需要的。rnrnrnrnrn优点:rnrn1、降低了组件之间的耦合性,实现了软件各层之间的解耦。rnrn2、可以使用容易提供
Spring的核心AOP和IOC
说的是控制反转和切面编程从Spring的角度看,AOP最大的用途就在于提供了事务管理的能力。事务管理就是一个关注点,你的正事就是去访问数据库,而你不想管事务(太烦),所以,Spring在你访问数据库之前,自动帮你开启事务,当你访问数据库结束之后,自动帮你提交/回滚事务!而控制反转是将你想用的东西交给了spring来控制,想用直接调用就行了....
面试题spring的ioc和aop的原理
1、IoC全称Inverse of Control(反向控制戒控制反转),程序之间解耦rn在类和类之间存在控制权,控制权指的是对象的创建和使用rnrn比如有类A和类B,我们之前的做法是在A中调用B,那么控制权就在A中,这样做的耦合度较高,rn  如果修改了B,A也要做相应修改。引入Spring框架后,控制权由spring容器来负责。当A想使用B时,需要由Spirng容器通过 rn配置文件迚行注入。
Spring 的IOC和AOP特点
Spring的核心:IOC与AOP。IOC是控制反转或依赖注入,AOP是面向切面编程。
我对aop的通俗理解
面向切面编程是对面向对象编程的有益补充 n同样实现一个业务方法执行前的操作。nn调用(假设这是一个方法before切入)nnnnA a = new A();na.method1();nn面向对象编程写法:nnnnpublic class A{n @Resourcen private UserDao userDao;n @Resourcen private LogDao lo...
Spring IoC与AOP的核心思想(
IoC和AOP都是Spring的核心思想,这两天利用休息的时间,补了补之前没看明白的Spring。现在我更关心这种技术的实现方式和核心思想,用框架,我想本身不会太复杂。rn rn    当然,最为一个框架级的轻量组件,大量的配置文件是不可缺少的,但是核心是要把这些配置文件,配置节组装起来,并将核心代码编写为完全业务无关的。我们看看Spring是怎么做的。rn rn    首先,IoC,控制反转。S...
Spring中三个重要概念 IOC AOP Bean
首先讲解一下Spring框架,以及为什么要使用Spring 框架?Spring 是一个很好的容器框架, 是轻量级的IoC和AOP的容器框架,主要是针对javaBean的生命周期进行管理的轻量级容器,一般在传统的java开发中具有高度的耦合性,一个项目中或者一个逻辑功能的实现时,往往一个对象需要依赖很多的对象来完成自己的操作,这样就造成了两个类的依赖关系太强,改一个地方,往往牵扯很多类牵扯大量的代码。
Android AOP介绍及实现原理
深入理解Android之AOPnnnn一、闲谈AOPnn大家都知道OOP,即ObjectOriented Programming,面向对象编程。而本文要介绍的是AOP。AOP是Aspect Oriented Programming的缩写,中译文为面向切向编程。OOP和AOP是什么关系呢?首先:nnnl OOP和AOP都是方法论。我记得在刚学习C++的时候,最难学的并不是C++的语法,而是C++所代...
文章热词 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型 设计制作学习
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 什么是区什么是区块链技术 什么什么是区块链技术