基于Spring AOP权限控制应用研究.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于Spring AOP权限控制应用研究

基于Spring AOP权限控制应用研究   摘要:Spring AOP的面向切面编程的能力,解决了传统面向对象程序设计(OOP)在权限控制应用中存在的问题。实现权限控制组件的模块化,业务逻辑组件与权限控制组件的分离和解耦,从而提高组件及代码的复用度。   关键词:OOP;面向切面编程;Spring AOP;权限控制      1 引言   OOP(Object Oriented Programming,面向对象程序设计)中的每个对象均由属性和方法封装构成,是对客观物质的抽象,对比传统的面向结构程序设计思想,OOP思想更加接近于客观世界,是当前最主流的编程思想。基于继承、多态和封装等特性的OOP在解决纵向多层次的对象关系问题,如继承、聚合和泛化等,展示出强大能力。但运用OOP解决一些横向关系的问题,如日志、权限控制、缓存和事务等问题,却无法行之有效。因为此类问题跨越了给定编程模型中的传统职责界限。如果使用面向对象技术程序设计(OOP)来解决这类问题 ,往往会使系统衍生大量冗余代码,组件紧密耦合和可维护性差等问题。为了弥补面向对象编程技术解决“横切”方面问题存在的能力不足, 面向切面编程(Aspect Oriented Programming ,简称AOP)技术便应运而生,它的出现有效解决了上述问题,并使系统设计开发变得简单而高效 ,并从编程方法学的角度提供了一种编写安全程序的有效途径。   2 Spring框架技术与Spring AOP技术原理   SpringFramework是开源的J2EE应用框架。它的核心是个轻量级容器,Spring通过容器管理物件的生命周期、物件的组态、依赖注入等。旨在简化J2EE的开发,降低J2EE项目实施的难度。Spring帮助实现了真正的逻辑层和Web层的分离。它是为解决企业应用开发的复杂性而创建的,Spring使用基本的JavaBeans也就是POJO便可以完成EJB完成的事情。Spring的主要设计目标是设计系统组件就有可重用性、易测试、简单以及松散耦合等特性。   2.1 Spring框架体系结构   Spring 框架是一个分层架构,由 7 个定义良好的模块组成。Spring 模块构建在核心容器之上,核心容器定义了创建、配置和管理 bean 的方式[1]。   2.2 Spring IoC模式   当我们进行项目开发时,我们将一个复杂的系统进行有效的划分,形成多个模块,这样可以使我们有效的理解和控制整个系统,使每个模块都能易于理解和维护。但是模块之间以某种方式进行信息交换的时候,模块和模块之间就不可避免的发生了某种耦合关系。但是,如果模块间过强藕合则会对整个系统来说会造成很大的潜在危害,特别是当需求发生变化时,代码维护的代价相当高。因此我们要尽可能的消解模块间不必要的藕合,尽量提高系统的可维护性和组件的复用度。   Spring的核心是IoC(Inversion of Control,控制反转),就是为了要解决组件间的耦合而产生的,实现组件的构建和使用分开。所谓“控制反转”就是将原先系统中对象间关系的控制权从程序自身转交给IoC容器。借助IoC能够降低系统中各个组件之间的依赖关系,实现解降藕的目的。   Spring IoC主要通过依赖注入的方式实现对象控制的反转。即在组件设计时,避免采用静态编码的形式描述组件间的相互依赖关系,而是在系统运行期间,由Spring IoC容器依据Spring 上下文的描述,动态地将目标对象实例注入到各个关联组件中。   Spring AOP可以解决传统面向对象编程(OOP)中不能够很好解决的“横切关注点”(CrossCut)方面的问题,例如,在应用开发中需要解决的安全、事务、日志等公共功能问题。尽管这些问题的解决与系统业务逻辑实现无关,但解决的好坏影响着系统的健壮和稳定,命运攸关系统开发的成败。而以传统方式解决“横切关注点”问题,通常是将公共功能代码散布并静态嵌入到各个业务逻辑组件中,因此“横切关注点”问题的解决代码与业务逻辑组件紧密耦合。一旦需要对公共功能代码做修改,必须逐个找出应用该代码的业务逻辑组件,再逐一修改。而Spring AOP解决这些问题的方法首先是将业务逻辑方面的解决和“横切关注点”方面问题的解决相分离;其次是将“横切关注点”问题的解决实现集中化、模块化处理。下面是关于Spring AOP的重要概念[1]:   切面(Aspect):一个关注点的模块化,这个关注点可能会横切多个对象。事务管理是J2EE应用中一个关于横切关注点的很好的例子。在Spring AOP中,切面可以使用基于模式)或者基于@Aspect注解的方式来实现。   连接点(Joinpoint):在程序执行过程中某个特定的点,比如某方法调用的时

文档评论(0)

189****7685 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档