aop具体应用,AOP的作用

1,AOP的作用AOP只是一种编程范式,用于提供从另一角度来考虑程序结构以完善面向对象编程 。主要优点有:1-降低模块之间的耦合度 。2-使系统容易扩展 。3-更好的代码复用 。
2,AOP的应用举例假设在一个应用系统中,有一个共享的数据必须被并发同时访问,首先,将这个数据封装在数据对象中,称为Data Class,同时,将有多个访问类 , 专门用于在同一时刻访问这同一个数据对象 。为了完成上述并发访问同一资源的功能 , 需要引入锁Lock的概念 , 也就是说,某个时刻,当有一个访问类访问这个数据对象时,这个数据对象必须上锁Locked , 用完后就立即解锁unLocked,再供其它访问类访问 。使用传统的编程习惯,我们会创建一个抽象类,所有的访问类继承这个抽象父类,如下:abstract class Worker Java只提供了单继承,因此具体访问类只能继承这个父类,如果具体访问类还要继承其它父类,比如另外一个如Worker的父类,将无法方便实现 。重用被打折扣,具体访问类因为也包含“锁”状态之类的相关代码,只能被重用在相关有“锁”的场合,重用范围很窄 。仔细研究这个应用的“锁” , 它其实有下列特性:“锁”功能不是具体访问类的首要或主要功能,访问类主要功能是访问数据对象,例如读取数据或更改动作 。“锁”“锁”功能其实是这个系统的一个纵向切面,涉及许多类、许多类的方法 。如右图:因此,一个新的程序结构应该是关注系统的纵向切面,例如这个应用的“锁”功能 , 这个新的程序结构就是aspect(方面)在这个应用中,“锁”方面(aspect)应该有以下职责:提供一些必备的功能,对被访问对象实现加锁或解锁功能 。以保证所有在修改数据对象的操作之前能够调用lock()加锁 , 在它使用完成后,调用unlock()解锁 。
3,什么是aopaop的作用是什么Aop:oop的一个横向的服务,是对oop进一步的补充,提供安全、事务、日志等的集中式处理 , 相关的装备before、around、after exception【aop具体应用,AOP的作用】
4,AOP的应用范围很明显 , AOP非常适合开发J2EE容器服务器,JBoss 4.0正是使用AOP框架进行开发 。具体功能如下:Authentication 权限Caching缓存Context passing内容传递Error handling 错误处理Lazy loading 延时加载Debugging 调试logging, tracing, profiling and monitoring 记录跟踪 优化 校准Performance optimization性能优化Persistence 持久化Resource pooling资源池Synchronization 同步Transactions事务【AOP有必要吗?】当然,上述应用范例在没有使用AOP情况下 , 也得到了解决,例如JBoss 3.XXX也提供了上述应用功能 , 并且没有使用AOP 。但是,使用AOP可以让我们从一个更高的抽象概念来理解软件系统,AOP也许提供一种有价值的工具 。可以这么说:因为使用AOP结构,JBoss 4.0的源码要比JBoss 3.X容易理解多了,这对于一个大型复杂系统来说是非常重要的 。从另外一个方面说,好像不是所有的人都需要关心AOP,它可能是一种架构设计的选择,如果选择J2EE系统,AOP关注的上述通用方面都已经被J2EE容器实现了,J2EE应用系统开发者可能需要更多地关注行业应用方面aspect 。传统的程序通常表现出一些不能自然地适合单一的程序模块或者是几个紧密相关的程序模块的行为,AOP 将这种行为称为横切,它们跨越了给定编程模型中的典型职责界限 。横切行为的实现都是分散的,软件设计师会发现这种行为难以用正常的逻辑来思考、实现和更改 。最常见的一些横切行为如下面这些:日志记录,跟踪,优化和监控事务的处理持久化性能的优化资源池 , 如数据库连接池的管理系统统一的认证、权限管理等应用系统的异常捕捉及处理针对具体行业应用的横切行为前面几种横切行为都已经得到了密切的关注,也出现了各种有价值的应用,但也许今后几年,AOP 对针对具体行业应用的贡献会成为令人关注的焦点 。5 , AOP和IOC的概念以及在spring中是如何应用的Spring中AOP的实现就是通过动态代理来实现的 。动态代理的实现在上篇blog中已经涉及 。Spring中目前最为实用的AOP应用,非用其实现的事务管理机制莫属 。也正是这一点,使得Spring AOP大方异彩 。那么我们继续围绕上节的例子来探讨一下Spring中AOP机制的应用与开发 。首先,看看AOP中几个基本的概念对应在AOP中的实现:6,spring aop一般可以处理什么AOP面向方面编程 advice指定Aspect的作用时机,spring提供了以下的通知类型,对应不同的作用时机: 1前置通知:先执行方面逻辑,再执行目标方法; 2后置通知:先执行目标方法,如果不出现异常 , 再执行方面逻辑; 3异常通知:先执行目标方法aop是aspect oriented programing的简称,面向切面编程 。aop适合于那些具有横切逻辑的应用:如性能监测 , 访问控制,事务管理、缓存、对象池管理以及日志记录 。aop将这些分散在各个业务逻辑中的代码通过横向切割的方式抽取到一个独立的模块中 。aop 实现的关键就在于 aop 框架自动创建的 aop 代理,aop 代理则可分为静态代理和动态代理两大类,其中静态代理是指使用 aop 框架提供的命令进行编译,从而在编译阶段就可生成 aop 代理类 , 因此也称为编译时增强;而动态代理则在运行时借助于 jdk 动态代理、cglib 等在内存中“临时”生成 aop 动态代理类,因此也被称为运行时增强 。代理对象的方法 = 增强处理 + 被代理对象的方法spring aop 则采用运行时生成 aop 代理类,因此无需使用特定编译器进行处理 。由于 spring aop 需要在每次运行时生成 aop 代理,因此性能略差一些 。aop使用场景aop用来封装横切关注点,具体可以在下面的场景中使用authentication 权限caching 缓存context passing 内容传递error handling 错误处理lazy loading 懒加载debugging 调试logging, tracing, profiling and monitoring 记录跟踪 优化 校准performance optimization 性能优化persistence 持久化resource pooling 资源池synchronization 同步transactions 事务7 , AOP在spring中的具体应用最好举例说明Spring提供许多功能,在此我将快速地依次展示其各个主要方面 。首先,让我们明确Spring范围 。尽管Spring覆盖了许多方面,但我们已经有清楚的概念,它什么应该涉及和什么不应该涉及 。Spring的主要目的是使J2EE易用和促进好编程习惯 。Spring不重新开发已有的东西 。因此,在Spring中你将发现没有日志记录的包,没有连接池 , 没有分布事务调度 。这些均有开源项目提供(例如Commons Logging 用来做所有的日志输出,或Commons DBCP用来作数据连接池),或由你的应用程序服务器提供 。因为同样的的原因,我们没有提供O/R mapping层 , 对此,已有友好的解决办法如Hibernate和JDO 。springSpring的目标是使已存在的技术更加易用 。例如,尽管我们没有底层事务协调处理 , 但我们提供了一个抽象层覆盖了JTA或任何其他的事务策略 。Spring没有直接和其他的开源项目竞争,除非我们感到我们能提供新的一些东西 。例如,象许多开发人员,我们从来没有为Struts高兴过,并且感到在MVC web framework中还有改进的余地 。在某些领域 , 例如轻量级的IoC容器和AOP框架,Spring有直接的竞争,但是在这些领域还没有已经较为流行的解决方案 。(Spring在这些区域是开路先锋 。)Spring也得益于内在的一致性 。所有的开发者都在唱同样的的赞歌 , 基础想法依然是Expert One-on-One J2EE设计与开发的那些 。并且我们已经能够使用一些主要的概念,例如倒置控制,来处理多个领域 。Spring在应用服务器之间是可移植的 。当然保证可移植性总是一次挑战,但是我们避免任何特定平台或非标准化,并且支持在WebLogic,Tomcat , Resin , JBoss,WebSphere和其他的应用服务器上的用户 。你可以百度一下你好!要求好高!我的回答你还满意吗~~登陆这个模块啊

    推荐阅读