`
mqiqe
  • 浏览: 22632 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

一个简单的aop demo

    博客分类:
  • aop
阅读更多

一个简单的 aop demo

 

 

spring 配置

 

xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context"


http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd

 

 

 

 

<!-- 注册aspectj -->

<aop:aspectj-autoproxy />

 

<!-- 注册代理过滤器 -->

<context:component-scan base-package="com.aspect.*">

<context:include-filter type="annotation"

expression="org.aspectj.lang.annotation.Aspect" />

</context:component-scan>

 

 

简单的环绕方式

 

@Around("execution(* com.aspect..*.add*(..))")

public Object aroundAdd(ProceedingJoinPoint pjp) throws Throwable {

// Class pt = (Class) pjp.getTarget();

Object retVal = pjp.proceed();

for (int i = 0; i < pjp.getArgs().length; i++) {

System.out.println(">>>around>>>参数:" + pjp.getArgs()[i]);

}

System.out.println(">>>aronud>>>方法名:" + pjp.getSignature());

System.out.println("SourceLocation:"+pjp.getSourceLocation());

System.out.println("StaticPart:"+pjp.getStaticPart());

System.out.println("this:"+pjp.getThis());

System.out.println("Target:"+pjp.getTarget().toString());

return retVal;

}

 

 

demo

 

 

 

public class TestDemo {

static String context = null;

static ApplicationContext applicationContext;

static {

context = "applicationContext.xml";// ehcache简单配置(命名空间)

 

applicationContext = new ClassPathXmlApplicationContext(context);

}

 

public static void main(String[] arg) {

System.out.println("start---");

IDemo demo = (IDemo) applicationContext.getBean("demo");

IUser iu = demo.getUserImpl();

if (iu != null) {

iu.addUser("风光");

demo.getUserImpl().findUser("Lucy") ;

}

}

}


 

附件是完整的demo

 

输出

 

 

start---

>>>>>>>> 增加用户--检查ing..........

参数:风光

方法名:addUser

---------权限检测--------------

>>>>>>>> 增加用户--检查完毕!未发现异常!..........

>>>around>>>参数:风光

>>>aronud>>>方法名:void com.aspect.service.IUser.addUser(String)

SourceLocation:org.springframework.aop.aspectj.MethodInvocationProceedingJoinPoint$SourceLocationImpl@1a1399

StaticPart:execution(void com.aspect.service.IUser.addUser(String))

this:com.aspect.service.impl.UserImpl@1551b0

Target:com.aspect.service.impl.UserImpl@1551b0

>>>>>>>> 准备搜查用户..........

Lucy

>>>>>>>> 搜查用户完毕..........

 

 

 

  • src.rar (9.7 KB)
  • 下载次数: 17
分享到:
评论

相关推荐

    spring aop demo

    1、spring切入点 2、spring前置织入,传入参数处理 3、spring后置织入,传入参数处理 4、环绕织入,参数及返回值处理 5、返回后织入,返回值处理 6、异常织入,异常处理 maven环境下,测试用例可直接运行

    Spring-AOP demo

    1. **注解驱动的AOP**:Spring支持使用注解来定义切面,如`@Aspect`用于声明一个类为切面,`@Before`、`@After`、`@Around`、`@AfterReturning`和`@AfterThrowing`分别定义前置通知、后置通知、环绕通知、返回后通知...

    springBoot+aop 简单demo

    现在我们来详细探讨Spring Boot集成AOP的基本概念、应用场景以及如何实现一个简单的Before前置通知DEMO。 1. **AOP概述** 面向切面编程是一种编程范式,旨在提高代码的可复用性和模块化。它通过将关注点分离,将横...

    spring注解aop demo

    Spring注解AOP(Aspect-Oriented Programming,面向切面编程)是Spring框架中的一个重要特性,它使得开发者可以在不修改原有代码的情况下,通过添加注解来实现横切关注点,如日志、事务管理等。下面我们将深入探讨...

    Spring AOP简单demo

    以入门级的`advice`为例,我们可能有一个简单的日志切面: ```java @Aspect @Component public class LoggingAspect { @Pointcut("execution(* com.example.service.*.*(..))") public void serviceMethods() {} ...

    Spring Aop demo

    标题“Spring Aop demo”指的是一个关于Spring框架的面向切面编程(Aspect Oriented Programming,简称AOP)的示例项目。在Spring框架中,AOP用于处理系统中的横切关注点,比如日志记录、事务管理、权限验证等,这些...

    spring aop的demo

    在`springAop1`这个压缩包中,可能包含了一个简单的应用示例,展示了如何定义一个切面类,以及如何在该类中定义通知方法。例如,我们可能会看到一个名为`LoggingAspect`的类,其中包含了`@Before`注解的方法,用于在...

    Spring注解方式实现AOP demo

    本篇将通过注解方式探讨如何在Spring中实现AOP,基于提供的资源,我们可以看到一个实际的Demo项目结构。 首先,我们来看项目的基本结构: 1. `bin`目录:编译后的Java类文件会放在这里。 2. `.settings`目录:包含...

    spring aop demo 两种实现方式

    压缩包中的"aop"文件可能包含了一个简单的Spring AOP示例项目,包括了上述两种实现方式的源代码和配置文件。下载后,可以直接运行以观察AOP如何工作。 总结来说,Spring AOP提供了一种强大的方式来实现横切关注点,...

    AOPDemo.rar

    "AOPDemo.rar"可能包含一个简单的Android项目,用于演示AOP的使用。在这个项目中,开发者可能会使用如AspectJ、Dagger 2或 ButterKnife Zelezny等库来实现AOP。AspectJ是一个强大的AOP工具,支持Java和Android,它...

    AopDemo 一位大神些的高级 c# Aop切面的demo

    在本AopDemo中,大神展示了一个高级的C# AOP实现,帮助我们深入理解AOP的核心概念。 首先,AOP的关键概念包括切面(Aspect)、通知(Advice)、连接点(Join Point)、切入点(Pointcut)和织入(Weaving)。切面是...

    aop demo PostSharp

    本示例通过 PostSharp 2.0 在一个简单的控制台应用中展示了 AOP 的基本使用。PostSharp 允许我们定义切面并在不修改原有代码的情况下,轻松地添加额外的功能。这有助于保持代码的清晰性和可维护性,尤其对于需要大量...

    AOPDemo-master_aop_DEMO_android_

    `AOPDemo-master_aop_DEMO_android_`这个项目很可能是为了演示如何在Android环境中应用AOP技术。下面我们将详细探讨AOP在Android开发中的具体应用和实现方式。 1. **注解驱动的AOP**:在Java和Android中,AOP通常是...

    Spring AOP应用Demo

    Spring AOP(Aspect Oriented Programming,面向切面编程)是Spring框架中的一个重要模块,它提供了一种在不修改源代码的情况下,对程序进行功能增强的技术。这个Demo是针对Spring AOP的实践教程,适用于学习者理解...

    spring-aop实例demo

    2. **定义切面**:创建一个Java类作为切面,该类通常会包含一个或多个通知方法。这些方法需要使用`@Before`, `@After`, `@AfterReturning`, `@AfterThrowing` 或 `@Around` 注解来标记。例如: ```java @Aspect ...

    aopdemo-master.zip

    【标题】"aopdemo-master.zip" 是一个与Spring Boot AOP相关的项目压缩包,它包含了一个名为"aopdemo-master"的主目录。这个项目很可能是一个示例或教程,用于展示如何在Spring Boot应用程序中使用面向切面编程...

    基于注解的aop的小DEMO

    下面是一个简单的基于注解的AOP示例: ```java import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Before; import org.springframework.stereotype.Component; @Aspect @Component ...

    aopDemo.rar

    在这个"aopDemo.rar"压缩包中,我们可以看到一个关于如何使用AOP来实现日志ID追踪的示例。 AOP的核心概念是"切面",它包含了"通知"(advice)、"连接点"(join point)、"切入点"(pointcut)和"织入"(weaving)。...

    AopDemo.rar

    在"AopDemo"中,可能有两个通知,一个用于双击过滤,另一个用于动态权限处理。 4. **织入(Weaving)**:AspectJ将切面代码与主应用程序代码结合的过程。这可以在编译时或运行时完成。在这个示例中,可能是通过...

Global site tag (gtag.js) - Google Analytics