senazhang0332 2019-03-29 13:24 采纳率: 50%
浏览 548
已采纳

Spring AOP使用遇到的问题

#问题描述:给业务层织入切面后,业务层方法返回控制层后,返回值为null
#相关代码:
##controller:
@RequestMapping("/queryExample")
public Result queryExample(Long id) {
Example example = exampleService.findObject(id);
System.out.println("ExampleController***"+example);
return new Result(example);
}
##ExampleServiceImpl:
@Override
public Example findObject(Long id) {
Example example = exampleMapper.selectOne(id);
System.out.println("ExampleServiceImpl***"+example);
return example;
}
##ExampleAspect:
/**
* 切点方法
/
@Pointcut("execution(
com.seanzhang.sys.service.*.*(..))")
public void pointCutDemo() {}

/**
 * 环绕通知方法
 * @param jp
 */
@Around("pointCutDemo()")
public void aroundDemo(ProceedingJoinPoint jp) {
    try {
        System.out.println("beforeAroundDemo()");
        jp.proceed();
        System.out.println("afterReturningAroundDemo()");
        System.out.println("afterAroundDemo()");
    } catch (Throwable e) {
        System.out.println("afterThrowingAroundDemo()");
        System.out.println("afterAroundDemo()");
        e.printStackTrace();
    }   
}

#控制台

##没加切面控制台输出:
ExampleServiceImpl***Example [id=1, username=张三, password=123456]
ExampleController***Example [id=1, username=张三, password=123456]

##加完切面控制台输出:
beforeAroundDemo()
ExampleServiceImpl***Example [id=1, username=张三, password=123456]
afterReturningAroundDemo()
afterAroundDemo()
ExampleController***null
#可以看到,加完切面之后,对象从业务层返回控制层的时候竟然神奇的丢了,不知道有没有大神遇到过类似的问题?怎么解决的?谢谢!

  • 写回答

1条回答

  • Vane11 2019-03-29 14:48
    关注

    @Around 标注的方法写错了,环绕的方式下,方法是需要返回值的。不返回的话,方法调用方就收不到方法执行结果了

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 Jenkins+k8s部署slave节点offline
  • ¥15 微信小游戏反编译后,出现找不到分包的情况
  • ¥15 如何实现从tello无人机上获取实时传输的视频流,然后将获取的视频通过yolov5进行检测
  • ¥15 WPF使用Canvas绘制矢量图问题
  • ¥15 用三极管设计一个单管共射放大电路
  • ¥15 孟德尔随机化r语言运行问题
  • ¥15 pyinstaller编译的时候出现No module named 'imp'
  • ¥15 nirs_kit中打码怎么看(打码文件是csv格式)
  • ¥15 怎么把多于硬盘空间放到根目录下
  • ¥15 Matlab问题解答有两个问题