xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd">
<!--启动对@Aspect注解的支持 -->
<aop:aspectj-autoproxy></aop:aspectj-autoproxy>
<!--引入切面类-->
<bean id="myInterceptor" class="cn.itcast.service.MyInterceptor"></bean>
package cn.itcast.service;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.After;
import org.aspectj.lang.annotation.AfterReturning;
import org.aspectj.lang.annotation.AfterThrowing;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut;
//这个注解用来说明这个类是切面
@Aspect
public class MyInterceptor {
//定义切入点用来定义拦截的方法
@Pointcut("execution (* cn.itcast.service.impl..*.*(..))")
private void anyMethod(){}//采用方法声明一个切入点
@Before("anyMethod()")//定义前置通知
public void doAccessCheck() {
System.out.println("前置通知");
}
@After("anyMethod()")
public void doAfter()//定义后置通知
{
System.out.println("最终通知");
}
@AfterReturning(pointcut="anyMethod()")
public void doAfterReturning()//定义后置通知
{
System.out.println("后置通知");
}
//注意:如果出现异常则前置通知和最终通知执行,后置通知则不执行
@AfterThrowing(pointcut="anyMethod()", throwing="ex")//定义异常通知
public void doExceptionAction(Exception ex) {
System.out.println("异常通知");
}
@Around("anyMethod()")
//定义环绕通知,方法中的参数是固定的
public Object doAround(ProceedingJoinPoint pjp) throws Throwable
{
System.out.println("环绕通知之前");
Object result=pjp.proceed();
System.out.println("环绕通知之后");
return result;
}
}
分享到:
相关推荐
在Spring中使用AspectJ,我们通常有两种方式:一种是使用AspectJ的编译时或加载时织入,这需要配置AspectJ的编译器或加载器;另一种是通过Spring的注解驱动的AOP,它利用AspectJ的编译器或 weaving工具来生成代理类...
在实际开发中,理解并掌握AspectJ与Spring的结合使用,能够帮助我们更好地设计和实现复杂的业务逻辑,提高代码的可读性和可维护性。对于希望深入理解和应用AOP概念的开发者来说,AspectJ是一个不可或缺的工具。
标题提到的"Spring 使用AspectJ 实现 AOP之前置通知小例子",指的是利用AspectJ在Spring中实现AOP的一种特定类型的通知——前置通知(Before advice)。前置通知在目标方法执行之前运行,但不会阻止方法的执行。这种...
这通常涉及到添加`<aop:aspectj-autoproxy>`标签,它指示Spring使用AspectJ代理来创建bean。 ```xml <aop:aspectj-autoproxy /> ``` 2. **定义事务切面**:创建一个包含事务处理逻辑的切面类,该类通常会包含一...
本实例将带你深入理解并实践Spring AOP与@AspectJ的结合使用。 首先,了解AOP的基本概念。面向切面编程是一种编程范式,它允许程序员定义“切面”,即跨越多个对象的行为或责任。这些切面可以包含业务逻辑、日志、...
为了在Spring应用中使用AspectJ,我们需要在配置文件中启用AspectJ自动代理,并添加相关的依赖。例如,在Spring XML配置中: ```xml <aop:aspectj-autoproxy /> ``` 同时,在Maven或Gradle构建工具中引入AspectJ...
综上所述,为了在Spring中利用AspectJ的全部功能,你需要将对应的AspectJ JAR文件加入到项目类路径中,然后按照Spring文档或AspectJ文档的指导配置和使用AOP。这将使你的代码更加模块化,降低耦合,提高可维护性。
Spring支持两种方式集成AspectJ:编译时织入(使用ajc编译器)和运行时织入(使用Spring代理)。运行时织入更灵活,不需要改变原有的编译过程,但可能性能稍逊。 **五、AspectJ的切点表达式** AspectJ提供了一种...
在Spring4.3.7版本中,Spring支持使用AspectJ进行AOP编程。引入AspectJ的依赖包,可以使用AspectJ的表达式语言(Pointcut Expression Language, PEL)来精确地定义切点。例如,`execution(* com.example.service.*(....
在Spring中,我们可以使用AspectJ来实现AOP,AspectJ是一个强大的AOP框架,它可以与Spring无缝集成,提供更细粒度的控制。 首先,让我们了解一下AOP中的通知类型: 1. **前置通知**(Before Advice):在目标方法...
本篇文章将详细探讨在Spring 2.5中使用AspectJ进行AOP开发所需的知识点。 首先,我们需要理解AOP的核心概念: 1. **切面(Aspect)**:切面是关注点的模块化,它封装了多个相关方法,这些方法在程序的不同点执行,...
标题"spring和aspectj的aop实验"表明我们将探讨如何在Spring中使用AspectJ进行AOP实践。这通常涉及到创建切面、定义通知、配置织入策略以及测试其效果。 1. **什么是AOP** AOP的核心概念是切面(Aspect),它封装...
Spring AOP的AspectJ支持jar包; 包括: com.springsource.net.sf.cglib-2.2.0.jar com.srpingsource.org.aopalliance-1.0.0.jar com.srpingsource.org.aspectj.weaver-1.68.RELEASE.jar
要开始使用@AspectJ,我们需要导入相关的Spring库,例如`spring-aspects.jar`。然后在Java代码中,我们可以创建一个带有`@Aspect`注解的类来定义切面。这个类可以包含一个或多个方法,这些方法被称为通知(advisors...
Spring AOP AspectJ 使用及配置过程解析 本文主要介绍了 Spring AOP AspectJ 的使用及配置过程解析,通过示例代码介绍了非常详细,对大家的学习或者工作具有一定的参考学习价值。 AspectJ 简介 AspectJ 是一个...
要在 Spring 应用中使用 AspectJ 注解, 必须在 classpath 下包含 AspectJ 类库: aopalliance.jar、aspectj.weaver.jar 和 spring-aspects.jar等jar包,文件已打包上传。
aspectj.jar的1.9.0版本,下载后粘贴到所属的lib文件下即可
在Spring框架中,AspectJ是一种...通过以上步骤,你可以在Spring应用中成功地导入和使用AspectJ,实现更灵活、模块化的代码结构,提高代码复用性和可维护性。理解并熟练运用AOP是提升Spring应用开发能力的关键之一。
2. Spring中使用AspectJ:在Spring框架中,可以使用AspectJ来实现AOP,通过引入AspectJ相关类库,使用AspectJ注解来描述切点和增强,并使用Spring的AOP支持来织入增强。 3. 编程方式:使用AspectJ来实现AOP,需要...
6. **技术整合:**演示了如何将AspectJ与其他关键技术(如Spring、Hibernate、Swing、JDBC等)结合使用,以简化复杂的企业级应用开发。 7. **AspectJ 6新特性:**全面覆盖AspectJ 6的最新特性,包括新的语言特性、...