Spring 2.X 中AOP的使用浅析
Spring 2.X 中AOP的使用浅析  和Spring1.X相比,Spring2.X使用AspectJ的语法来声明AOP,这使得它更“标准”,更灵活了。还是那句话,如果你不了解AspectJ并且打算使用Spring2.X的AspectJ式AOP,那就学学AspectJ吧,这方面的书还是很多了。Spring2.X下的切面有两种实现方式,一种是以Java文件定义切面(其只是普通的Java类),然后在配置文件中声明定义的切面;另一种是在Java类中引入和AOP相关的元数据(注释)。  先介绍第一种配置方式。需要指出的是,Spring2.X的beans名称空间和Spring1.X有所不同,它采用了Schema而不是DTD(也可采用DTD方式,具体的请参考文档)。还是引入毫无意义的日志切面,定义的切面类LogingAspect 如下:第二种实现 AOP 的方式和第一种相比,只是在 LogingAspect 中加入了注释,而省去了配置文件中和 LogingAspect 相关的配置。重新编写的 LogingAspect 如下:
Tags: Spring  aop  浅析  
Spring AOP 进行统一日志处理代码
Spring AOP 进行统一日志处理代码 spring配置文件: Xml代码
Tags: Spring  aop  日志  
基于@AspectJ配置Spring AOP之一
在低版本Spring中定义一个切面是比较麻烦的,需要实现特定的接口,并进行一些较为复杂的配置,低版本Spring AOP的配置是被批评最多的地方。Spring听取这方面的批评声音,并下决心彻底改变这一现状。在Spring2.0中,Spring AOP已经焕然一新,你可以使用@AspectJ注解非常容易的定义一个切面,不需要实现任何的接口。 Spring2.0采用@AspectJ注解对POJO进行标注,从而定义一个包含切点信息和增强横切逻辑的切面,Spring 2.0可以将这个切面织入到匹配的目标Bean中。@AspectJ注解使用AspectJ切点表达式语法进行切点定义,可以通过切点函数、运算符、通配符等高级功能进行切点定义,拥有强大的连接点描述能力。在你学习基于@AspectJ的切面技术后,恐怕你就再也没有兴趣使用低版本Spring AOP的实现技术了,毕竟马落桃花马前雪,两者的易用性、便捷性是不可同日而语的。 着手使用@AspectJ 我们知道在低版本的Spring AOP中,你必须使用Pointcut和Advice接口描述切点和增强,并用Advisor组合两者描述一个切面,@AspectJ则采用JDK 5.0的注解技术描述切点和增强类型,而增强的横切逻辑就在被标注的POJO中定义。 使用前的准备
Tags: aspectj  Spring  aop  
Spring 2.0的新特性之@AspectJ
本文结合Spring 2.0开发参考手册来讲解。对于手册中有的东西我就不说了,其实这样的话也剩下不了多少我能说的了,我只是谈一下我在看手册的时候比较费劲的地方和我对这些地方的理解。 首先@AspectJ并不是AspectJ,Spring AOP 框架支持@AspectJ只是说Spring支持用AspectJ注解的方式配置AOP。当然了,Spring 2.0也支持纯的AspectJ的应用,但这个不在本文的范围之内。 Spring 2.0开发参考手册的<6.2.>部分的内容是关于@AspectJ的。你可以看Springframework.org上的英文文档,这样你可以看到最最新的东西。蛙眼上也有中文版的,也是最新的,当然会比最最新的旧一点点点循环。虽然翻译过来的手册和英文原版的差别很小,但这并不意味着没有差别。像原版中的有绿叶标示的部分,翻译过来的就没有。虽然绿叶标示的部分你可能看的不大懂(有些东西我就看不明白555),不过你一旦看懂可能就会获益匪浅,而且原版的味道最正。所以如果你的英语水平够的话我还是推荐大家看原版的手册。好了不废话了。下面开门见山,步入正题。 要启用@AspectJ支持的话要在Spring配置文件中加入下面一句
Tags: Spring  aspectj  aop  
AspectJ如何实现AOP
使用AspectJ,我们不用对原有的代码做任何修改,就可以为代码提供不同的Aspect(方面)--比如,认证,事务等。我们只需要提供两个不同的Aspect--认证Aspect和事务Aspect。我们来看看,AspectJ编译器为我们做了什么事情。1. 首先,AspectJ从文件列表里取出所有的文件名,然后读取这些文件,进行分析。2. AspectJ发现一些文件含有aspect的定义,在这个例子里,就是AuthAspect和TransactionAspect的定义;这些aspect就是代码生成规则。3. AspectJ根据这些aspect代码生成规则,修改添加你的源代码。在这个例子里,就是修改添加Bank文件。4. AspectJ读取AuthAspect的定义,发现了一个pointcut--bankMethods();这个pointcut的定义是execution(* Bank.deposit(…)) || execution(* Bank. withdraw (…)),表示所有对Bank类的deposit和withdraw方法的执行点。5. AspectJ继续读取AuthAspect的定义,发现了一个around(),这在AspectJ中叫做Advice, Advice允许你在某个类的方法的调用之前或调用之后,加入另外的代码。所示代码中的around()的" // 验证account是否为合法用户"部分,就是要加入的代码。这段代码要加在哪里呢?around()后面跟了一个pointcut--bankMethods()。根据这个pointcut,AspectJ会把这段代码加入到Bank.deposit和Bank.withdraw两个方法的执行之前。6. AspectJ读取TransactionAspect的定义,象第(4)步一样,发现了发现了一个pointcut--bankMethods()。AspectJ继续读取AuthAspect的定义,发现了一个around()。这次AspectJ把"Begin Transaction"和"End Transaction"两段代码加在Bank.deposit和Bank. withdraw两个方法的执行前后。
Tags: aspectj  aop  Spring  IOC  
用Spring AOP实现开发中松散耦合
AOP(Aspected Oriented Programming)是一种新兴的编程技术。它可以解决OOP和过程化方法不能够很好解决的横切(crosscut)问题,如:事务、安全、日志等横切关注。当未来系统变得越来越复杂,横切关注点就成为一个打问题的时候,AOP就可以很轻松的解决横切关注点这个问题,使得AOP编程成为。Spring 是基于J2EE的轻量级开源开发框架,其中Spring AOP组件实现了面向方面编程。
AOP 概述 面向方面编程 (AOP) 提供从另一个角度来考虑程序结构以完善面向对象编程(OOP)。 面向对象将应用程序分解成各个层次的对象,而AOP将程序分解成各个方面或者说关注点 。这使得可以模块化诸如事务管理等这些横切多个对象的关注点。
Tags: Spring  aop  松散  耦合  
Spring Aop拦截器使用
1.自定义被拦截的接口,且实现接口。
2 实现AOP的方法级拦截器。它可以在目标操作前后执行,拦截自定义接口的参数,或拦截接口返回的值。代码:
3. ApplicationContext.xml的设置
4.运行
Tags: Spring  aop  拦截器  
Spring 2.0中的AOP实现-aspectj-Advice
在Spring 2.0中,除了传统的通过实现AOP AIP的方式来实现Advice之外,还提供了两种更加简便的方式来实现Advice:1)基于XML Schema的设置;2)基于Annotation的支持,采用这两种方式,Advice将不用实现特定的接口。现在让我们来看看如何使用这两种方式来分别实现Before Advice、After Advice、Around Advice、Throwing Advice。 一、Before Advice:基于XML Schema 当基于XML Schema实现Before Advice时,你的Advice类不用实现org.springframework.aop.MethodBeforeAdvice接口,例如:
二、Before Advice:基于Annotation 使用Annotation来实现Advice,在XML文件上的定义要比基于XML Sechema的方法要简便的多,但在实现Before Advice类时,则需要使用到@Aspect、@Before标识,并需要引入org.aspectj.lang.annotation包中的类。还以LogBeforeAdvice为例,LogBeforeAdvice类需要改为:
三、After Advice:基于XML Sechma 和Before Advice一样,基于XML Sechma实现After Returning Advice时,不再需要org.springframework.aop.AfterReturningAdvice接口:
四、After Advice:基于Annotation 和Before Advice相似,使用@AfterReturning来表示After Returning Advice:
五、Around Advice:基于XML Sechma 在Spring 2.0中,Around Advice不用实现org.aoplliance.intercept.MethodInterceptor接口,但Advice的方法必须返回对象,并且必须定义一个ProceedingJoinPoint参数,例如:
六、Around Advice:基于Annotation 和Before Advice相似,使用@Around来表示Around Advice:
七、Throw Advice:基于XML Sechma 在Spring 2.0中,Throw Advice不用实现org.springframework.aop.ThrowsAdvice接口,但Advice的方法必须定义Throwable(或其子类)参数,例如:
八、Throw Advice:基于Annotation
Tags: Spring  aop  aspectj  Advice  
系统日志管理解决方案
系统日志管理解决方案1 系统日志管理的作用当系统操作员对系统中的数据进行新增、修改、作废等操作时,能够记录下相应的操作员、操作时间、操作员所用机器的IP、操作类型、操作对象等信息。如:在商位信息管理中,当操作员对某个商位进行修改后,要记录下上述提到的要素。2 系统日志管理的设计使用Spring2.0对AspectJ的支持实现。具体在一个java Bean 中用AspectJ标签实现切面,切面负责完成对系统日志管理要处理的信息进行组装、存储到表中,以便系统管理员进行查询;在切面中所需的操作员信息、操作员所用机器的IP通过在系统登录时存储到会话中,操作类型和操作对象信息应该通过AspectJ的连接点 进行获取。创建好java Bean 后,在spring 配置文件中加入,在系统加载时,系统会在已注入的Bean 中寻找包含 AspectJ标签的Bean。当触发Bean 中定义的切点后,将会执行切点对应的通知。相应的库表设计如下:
Tags: 日志  管理  解决方案  Spring  java  IOC  aop  系统  
spring aop 权限管理系统
此权限管理系统把待访问的业务层方法做为权限管理中的资源,通过spring aop 对接口方法进行拦截,来实现权限的管理,可以实现细粒度的权限控制。   在上文体验了spring aop 一些特性,aop 接口:MethodBeforeAdvice, AfterReturningAdvice, ThrowsAdvice 实现这三个接口分别对方法执行前,后,执行中抛异常等情况进行的,我们要是想做overload 这样的操作时,要用MethodInterceptor 接口,此接口好在有返回值,   public Object invoke(   MethodInvocation invocation)   throws Throwable   {   //.   }   上文做法有些牵强业务逻辑还有throws PermissionDeniedException 感觉不爽,现在用MethodInterceptor 接口,来写这个demo,把权限与业务分开。   advice 如下:
Tags: Spring  aop  权限  管理  IOC  系统  
分页:[«] 1[»]
Feed订阅集
勤劳致富^.^
Powered By Z-Blog   STYLE by busfly . FatMouse
Copyright © 2007 巴士飞扬技术博客. . 沪ICP备07027972号. 会员群1(VS为主):3769186.