aop编程的坏处,什么是AOPAOP的作用是什么

1,什么是AOPAOP的作用是什么AOP :面向切面编程 ,它主要关注的是程序的执行过程 。具体解析:在java方法调用时,AOP机制能自动进行方法拦截,允许在方法调用之前,调用后 , 以及执行异常时添加特点的代码来完成需要的功能 。特点:1,消除编码模块之间的耦合 。2,可以在任意阶段 , 向已有功能模块中填加新功能,且不侵入原有功能 低侵入式设计 3, 各步骤之间的良好隔离性 , 源代码的无关性oop:纵向的业务 。Aop:oop的一个横向服务,是对oop进一步补充,提高安全、事务、日志等的集中式处理 。相关的装备 before、around、afteraop是面向切面的编程 。它可以通过预编译方式和运行期动态代理实现在不修改源代码的情况下给程序动态统一添加功能的一种技术 。如果您学习java的话,会在spring中经常用到,那是你更能领悟它!
2,请问大家在工作中对spring的aop用的多吗如果用的话都在哪些方面用到AOP面向切面编程 , 继OOP面向对象编程后又一出色的编程思想.在spring项目中AOP主要用于例如声明事物 , 日志系统的实现 。主要体现在配置文件中,代码中较少 。【aop编程的坏处,什么是AOPAOP的作用是什么】
3,Spring的AOP有什么作用一般程序中经常用的就是日志和声明式事物面向切面编程(AOP)提供另外一种角度来思考程序结构,通过这种方式弥补了面向对象编程(OOP)的不足除了类(classes)以外,AOP提供了切面 。切面对关注点进行模块化,例如横切多个类型和对象的事务管理Spring的一个关键的组件就是AOP框架 , 可以自由选择是否使用AOP提供声明式企业服务,特别是为了替代EJB声明式服务 。最重要的服务是声明性事务管理,这个服务建立在Spring的抽象事物管理之上允许用户实现自定义切面 , 用AOP来完善OOP的使用可以把Spring AOP看作是对Spring的一种增强给你举一个例子,比如一个注册登录系统,当然需要注册的地方有很多,你可能要做一个防止用户名重复注册的模块,这个时候就可以用到Spring的aop了!在你开发大型的应用时 , aop可以发挥很大的功能,对于你模块的耦合,以后的管理,功能升级……!都有很大的帮助好好的理解一下,争取自己去写一个aop出来!说的再清楚一点好不好
4 , spring aop的使用存在性能上的问题吗spring AOP不是用反射实现的,而bean的创建一般是这样做的 。spring里主要通过Java动态代理接口、cglib生成子类、AspectJ这三种方式来实现AOP 。通过AOP进行声明式事务管理应该是大家用的最多的吧 。像权限校验和日志记录虽然也具备一定的横切性需求,但好像很少拿spring来做,权限控制框架倒是可以考虑与spring进行集成 , 细粒度的日志记录则根本无法真正利用AOP来做,原因在于业务方法记录日志的位置是不统一的,从而无法确定切入点 。但spring利用AOP还是干了不少事情的,随便翻看源码你都可以发现它们的影子 。举个例子,spring里有一个javax.sql.DataSource的代理类TransactionAwareDataSourceProxy,它利用java的动态代理在运行时替换了原生DataSource的getConnection等诸多方法,最重要的是它使你的遗留系统具备了与spring集成并使用spring事务管理的能力,而这一切你只需要一个简单的配置,你并不知道spring在后台为你做了这些事情 。AOP是一种很有用的编程理念,语言和工具不应成为我们程序员思想的束缚,即使项目不用spring AOP你也可以在适当的契机把spring里好的想法拿来用 , 甚至你觉得不好还可以改造它 , 这样我们才能真正成为工具的主人而不是奴仆 。5,spring的aop是怎么影响代码的AOP为Aspect Oriented Programming的缩写,意为:面向方法编程,可以通过预编译方式和运行期动态代理实现在不修改源代码的情况下给程序动态统一添加功能的一种技术 。AOP实际是GoF设计模式的延续,设计模式孜孜不倦追求的是调用者和被调用者之间的解耦 , AOP可以说也是这种目标的一种实现 。面向切面编程(也叫面向方面):Aspect Oriented Programming(AOP),是目前软件开发中的一个热点 , 也是Spring框架中的一个重要内容 。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率 。AOP是OOP的延续,是(Aspect Oriented Programming)的缩写,意思是面向切面(方面)编程 。主要的功能是:日志记录,性能统计,安全控制 , 事务处理,异常处理等等 。主要的意图是:将日志记录,性能统计,安全控制,事务处理,异常处理等代码从业务逻辑代码中划分出来,通过对这些行为的分离 , 我们希望可以将它们独立到非指导业务逻辑的方法中,进而改变这些行为的时候不影响业务逻辑的代码 。target只是一个名称,但有一点就是要与类中的名称,能理解了吧 --》这是属相的名称,类型是数组 //list这里是什么意思? 表示数组类型往里面赋值方式 invokebufinteceptor --》数组中的值 也就是intercepotnames[0] = "invokebufinteceptor"6,Spring中的ioc和aop有什么作用为什么要用ioc和aop面试中多次我来说说我的理解:面试的时候 , 尽量不要照本宣科,这样给面试官的印象是很差的 。用自己的话理解是最好的 。我先来将两个例子:ioc,控制反转,这个指的就是我们获取对象的方式进行反转了,改变了 。在使用spring之前是需要手动new出来的,是我们主动获取的 。使用spring之后,是将这个获取的过程交给spring来管理,我们只需要告诉spring你需要什么就行了 , 它就会把东西给你 。比如:在没有电商的时候 , 我们去上街买东西,需要考虑到这东西有没有,价钱多少,怎么搬回来,去有多远……等等无数个和主要的业务逻辑(买东西)无关的问题 。这样就会扰乱主业务逻辑 。当我们有了电商平台后,买东西时只需要两步 。注册账号(装载bean),告诉电商你要的东西名字(通过名字获取Bean),然后就可以在门口收到东西了 。这就是ioc 。aop,面向切面 。在谈这个之前需要了解几个词:切面,切入点,织入,目标对象,通知 。我先解释下名字的意思,再讲故事 。切面:就是你要准备增强的那些方法 。切入点:就是具体织入的方法,定义了地点织入:动词 , 就是将切面织入的过层目标对象:被增强的类通知:就是什么时候增强 , 定义了时间好了,了解清楚上面的几个词的意思后,再听故事就容易多了 。aop的功能就是用来增强,在执行主业务的通知也顺带执行其他业务 。如:老李上街办点事儿,走啊走 , 走到了老王家门前(切入点),老王看见老李问:去哪?。±侠睿荷辖职斓闶露勘昀啵├贤酰耗前镂宜潮惆颜夥庑磐兜接释怖锇?。(切面),等到10点的时候邮局开门了去柜台投 。(通知)老李:好嘞 。然后老李接过信 。(织入)老李继续走啊走 , 继续上街办事(增强后的目标类) 。办完事后老李回家了 。以上就是aop 。aop一般用来处理权限控制,日志记录,加载事务等非主要业务逻辑的事情 。底层是采用cglib和jdk的动态代理实现的 。以上例子可能会有点不恰当,如有大神,望指点修正,谢谢!还是需要去了解,多看看书!IOC:控制反转 , 是一种设计模式 。一层含义是控制权的转移:由传统的在程序中控制依赖转移到由容器来控制;第二层是依赖注入:将相互依赖的对象分离,在spring配置文件中描述他们的依赖关系 。他们的依赖关系只在使用的时候才建立 。简单来说就是不需要NEW一个对象了 。AOP:面向切面 , 是一种编程思想,OOP的延续 。将系统中非核心的业务提取出来,进行单独处理 。比如事务、日志和安全等 。这个简单来说就是可以在一段程序之前或者之后做一些事 。Spring 的AOP和IOC都是为了解决系统代码耦合度过高的问题 。使代码重用度高、易于维护 。不过AOP和IOC并不是spring中特有的,只是spring把他们应用的更灵活方便ioc为Inversion of Control意思是控制反转,AOP是面向切面 。spring就是他们结合的容器框架 。在spring的bean结构中如,在一个Service类中可以这样写 private PersonDao personDao = new PersonDaoBean();你看这样PersonDao对象就不用自己创建和维护了,交给了bean 。也就是控制反转 。AOP设置拦截用户的业务方法 , 判断权限,有权限则可以执行调用的业务方法,没有权限则不可以 。在拦截的时候出现环绕通知,前置通知 , 后置通知,例外通知,最终通知 。这是我的答案 , 望采纳,要是喜欢,请支持,很难打字的 。7 , spring 是java编程中啊哪类软件 有什么优缺点在SSH框假中spring充当了管理容器的角色,Spring 可以大大降低耦合 。首先耦合说白了就是类(也可以大到功能)与类之间的关联程度,关联越大 , 你的维护成本就越高,因为你改其中一个类,就很可能要去改和它关联的其他类,所以在设计的时候需要考虑清楚 , 尽量做到松散耦合,这时候就需要Spring了 。struts负责控制Service(业务逻辑处理类)也就是C,从而控制了Service的生命周期,这样层与层之间的依赖很强,属于耦合 。这时,使用spring框架就起到了控制Action对象(Strus中的)和Service类的作用,两者之间的关系就松散了,Spring的Ioc机制(控制反转和依赖注入)正是用在此处 。Spring的Ioc(控制反转和依赖注入)控制反转:就是由容器控制程序之间的(依赖)关系,而非传统实现中,由程序代码直接操控依赖注入:组件之间的依赖关系由容器在运行期决定 ,由容器动态的将某种依赖关系注入到组件之中。从上面我们不难看出:从头到尾Action仅仅是充当了Service的控制工具,这些具体的业务方法是怎样实现的 , 他根本就不会管,也不会问,他只要知道这些业务实现类所提供的方法接口就可以了 。而在以往单独使用Struts框架的时候,所有的业务方法类的生命周期,甚至是一些业务流程都是由Action来控制的 。层与层之间耦合性太紧密了,既降低了数据访问的效率又使业务逻辑看起来很复杂,代码量也很多 。,Spring容器控制所有Action对象和业务逻辑类的生命周期,由于上层不再控制下层的生命周期,层与层之间实现了完全脱耦,使程序运行起来效率更高,维护起来也方便 。使用Spring的第二个好处(AOP应用): 这个不太理解 。事务的处理:在以往的JDBCTemplate中事务提交成功,异常处理都是通过Try/Catch 来完成,而在Spring中 。Spring容器集成了TransactionTemplate , 她封装了所有对事务处理的功能,包括异常时事务回滚 , 操作成功时数据提交等复杂业务功能 。这都是由Spring容器来管理,大大减少了程序员的代码量,也对事务有了很好的管理控制 。Hibernate中也有对事务的管理,hibernate中事务管理是通过SessionFactory创建和维护Session来完成 。而Spring对SessionFactory配置也进行了整合,不需要在通过hibernate.cfg.xml来对SessionaFactory进行设定 。这样的话就可以很好的利用Sping对事务管理强大功能 。避免了每次对数据操作都要现获得Session实例来启动事务/提交/回滚事务还有繁琐的Try/Catch操作 。这些也就是Spring中的AOP(面向切面编程)机制很好的应用 。一方面使开发业务逻辑更清晰、专业分工更加容易进行 。另一方面就是应用SpirngAOP隔离降低了程序的耦合性使我们可以在不同的应用中将各个切面结合起来使用大大提高了代码重用度。对Spring好处的简单理解struts的优点1、表现层标签是个好东西 。jstl和struts的配合最好 。2、控制层的取form和validate很直观 。servlet和struts的配合也不错 。webwork的优点1、interceptor是最大的优势,这个东东不仅仅是验证用,玩好可以减轻大量的编码工作 。2、别的方面和struts差不多 。spring的优点1、不能算单纯的mvc , 要与别的配合用才能起到mvc的最好效果 。2、与hibernate配合起来,能感受到纯对象的数据库操作 。3、与别的框架配合是spring的最大优点 。4、控制反转对重构项目很有作用 , 如果你积累了足够的spring功能代码,那做一个新项目也就是美工和写配置文件的工作 。spring的缺点:杂而不精,所有的技术都有涉及 , 但都不太好用,要与别的配合才能达到做好的效果 。除了控制反转(ps:确实好用)spring是做的最好的,别的都太简单 。概括的说:1、追求项目的速度||你的程序员都是新手,struts是你最好的选择 。2、特殊而且复杂的功能组合,那么webwork的interceptor会帮你搞定 。不过技术难度比struts稍大,看你手下的水平了 。3、追求完美的设计||最大的重用性,spring会帮助你 。不过难度也是最大的,你要考虑好 。spring就是一个开发框架,它的功能和强大,同时占用资源又比较小 。他的内容很多,你可以主要了解IOC, AOP, MVC 。你可能知道的其他框架struts和hibernate等等 。struts只是实现了web MVC 方式 。spring包含这种方式 。并且spring也可以与其他框剪组合开发 。当然spring也包含了数据库的事物处理机制 。spring是web编程的框架 一般结合struts2 hibernate使用 它是一个大的框架 将两外两个框架整合到一起简化web编程,让程序员将更多精力放在业务逻辑上面缺点的话你也不用管了反正现在的bs系统主流的就是用SSH(spring+struts2+hibernate)编写的 你要走这条路的话就得学这个

    推荐阅读