0 0

spring aop 返回值问题5

我在service层方法加入aop,方法有返回值,类似这杨
   public List<User> getAllUser(User user) {

List<User> users = userMapper.getAllUsers1( user);

return users;
}
然后我定义了一个切面,用的spring 环绕通知,方法类似
这杨
public Object doAround(ProceedingJoinPoint pjp) throws Throwable { 
        long time = System.currentTimeMillis();           
        Object retVal = pjp.proceed();   
        time = System.currentTimeMillis() - time; 
         这里对retVal 进行处理
        System.out.println("process time: " + time + " ms"); 
        return retVal ; 
我想在Action层使用retVal 处理后的值,怎么把?还有发现目标方法会执行两次?求解
2013年10月24日 15:59

2个答案 按时间排序 按投票排序

0 0

会执行两次?不应该吧。我自己写了个类似你的例子,没有问题啊。
service实现:

@Service("userService")
public class UserServiceImpl implements UserService {

	public User getUserByName(String username) {
		User user = new User();
		user.setPassword("arthur");
		user.setUsername("arthur");
		return user;
	}

}

Around Aspect实现:
@Component
@Aspect
public class MethodAroundAspect {
	
	private static final Logger LOGGER = LoggerFactory.getLogger(DefaultMethodInterceptor.class);

	@Around("execution(* com.arthur.service..*.*(..))")
	public Object aroundPointcut(ProceedingJoinPoint pjp) throws Throwable{
		long start = System.currentTimeMillis();
		Object result = pjp.proceed();
		if(result instanceof User){
			((User)result).setUsername("god");
		}
		LOGGER.info("consuming {}s", System.currentTimeMillis() - start);
		return result;
	}
}

最后action调用
public User getUser2(){
		return userService.getUserByName("");
	}

没有发现问题啊。

2013年10月24日 17:49
0 0

1、我想在Action层使用retVal 处理后的值,怎么把 
  你现在的就可以

2、还有发现目标方法会执行两次?求解
= pjp.proceed();     没调用两次吧? 

2013年10月24日 16:49

相关推荐

    简单spring aop 例子

    Spring AOP(面向切面编程)是Spring框架的重要组成部分,它提供了一种模块化和声明式的方式来处理系统中的交叉关注点问题,如日志、事务管理、安全性等。本示例将简要介绍如何在Spring应用中实现AOP,通过实际的...

    在自定义spring aop中使用el获取拦截方法的变量值。

    标题中的“在自定义Spring AOP中使用EL获取拦截方法的变量值”指的是在Spring的面向切面编程(AOP)中,通过Expression Language(EL,表达式语言)来访问被拦截方法的局部变量值。这通常涉及到Spring的代理机制、...

    spring AOP注解的应用1

    在Spring框架中,AOP(面向切面编程)是一种强大的工具,它允许程序员将关注点分离,例如日志记录、事务管理、权限检查等,从核心业务逻辑中解耦出来。本篇主要探讨的是如何利用Spring AOP的注解来实现这些功能,...

    Spring Aop使用实例

    **Spring AOP 使用实例** Spring AOP(Aspect Oriented Programming,面向切面编程)是Spring框架的一个重要组成部分,它提供了一种在不修改原有代码的情况下,通过代理方式添加额外功能的技术。这种技术使得我们...

    spring aop实例annotation方法实现

    在IT行业中,Spring AOP(面向切面编程)是一种强大的工具,它允许程序员在不修改原有业务代码的情况下,对程序进行功能增强。本实例将详细探讨如何通过注解(Annotation)来实现Spring AOP的方法拦截。 一、Spring...

    spring aop demo

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

    7Spring AOP盗梦空间之二——获得返回值AfterReturnning

    本篇文章将深入探讨Spring AOP中的“AfterReturning”通知类型,即如何在方法正常执行后获取并处理返回值。 在Spring AOP中,我们可以定义切面(Aspect),通过切点(Pointcut)来定位关注点,并使用通知(Advice)...

    Spring_AOP_学习小结 Spring_AOP_学习小结 Spring_AOP_学习小结

    Spring AOP,即面向切面编程,是Spring框架的核心组件之一,它允许程序员在不修改原有业务代码的情况下,对程序进行功能增强。...通过学习和实践,你可以更好地在Spring框架中利用AOP解决实际问题。

    springboot spring aop 拦截器注解方式实现脱敏

    在Spring Boot应用中,Spring AOP(面向切面编程)是一种强大的工具,它允许我们创建横切关注点,如日志记录、权限检查等,这些关注点可以被编织到应用程序的多个点上,而无需侵入核心业务逻辑。在本案例中,我们将...

    swagger和spring Aop日志结合

    另一方面,Spring AOP(面向切面编程)则是Spring框架的一个核心特性,用于实现跨切面的关注点,如日志记录。本篇文章将深入探讨如何将Swagger与Spring AOP结合起来,以实现优雅的日志记录功能。 首先,让我们了解...

    spring注解aop配置详解

    Spring AOP,即Aspect-Oriented Programming(面向切面编程),是Spring框架的重要特性,它为应用程序提供了声明式的企业级服务,如日志、事务管理等。本篇将深入讲解如何通过注解来配置Spring AOP,以实现更加简洁...

    spring aop实现日志功能

    Spring AOP(Aspect Oriented Programming,面向切面编程)是Spring框架的一部分,它提供了一种优雅的方式来处理横切关注点,如日志、事务管理、性能监控等。这些关注点通常会分散在应用程序的各个角落,而AOP则允许...

    springaop拦截controller日志

    "springaop拦截controller日志"这个主题旨在讲解如何使用Spring AOP来拦截Controller层的方法调用,并在方法执行前后记录相关日志。 首先,了解Spring AOP的基本概念。AOP是一种编程范式,它允许程序员定义“切面”...

    Spring AOP之5种增强方法应用范例

    在Spring框架中,AOP(面向切面编程)是一种强大的设计模式,它允许开发者将关注点分离,将横切关注点(如日志、事务管理、权限检查等)与核心业务逻辑解耦。本篇文章将深入探讨Spring AOP中的5种增强方法,以及如何...

    SpringAOP注解特棒例子

    在这个"SpringAOP注解方式"的示例中,我们将深入探讨如何使用注解来实现Spring AOP的功能。 首先,Spring AOP通过两种主要的方式来定义切面:XML配置和注解。本示例主要关注注解方式,因为它提供了更简洁、更直观的...

    SpringAop.rar_aop

    Spring AOP,全称为Aspect-Oriented Programming(面向切面编程),是Spring框架的重要组成部分,主要用来处理系统中的横切关注点,如日志、事务管理、权限控制等。通过AOP,我们可以将这些分散在代码各处的重复逻辑...

    springAOP.docx

    Spring AOP(面向切面编程)是Spring框架的重要组成部分,它允许开发者将关注点从核心业务逻辑中分离出来,实现代码的模块化和重用。本文将深入探讨Spring AOP的XML版本,包括如何配置、相关术语以及如何实现不同的...

    Spring Aop Schema实现

    Spring AOP(面向切面编程)是Spring框架的重要组成部分,它提供了一种在不修改代码的情况下,通过代理机制实现横切关注点(如日志、事务管理、性能监控等)的模块化方式。本篇文章将深入探讨Spring AOP的Schema实现...

Global site tag (gtag.js) - Google Analytics