为了账号安全,请及时绑定邮箱和手机立即绑定

springBoot Aop可以切controller切不到service

springBoot Aop可以切controller切不到service

偶然的你 2019-05-06 21:44:33
问题描述最近在做一个springboot的项目中使用aop做全局日志管理但是出现了这样的问题controller包下的类都正常的切到了,但是service层怎么也没反应问题出现的环境背景及自己尝试过哪些方法@EnableAspectJAutoProxy没用srping.aop.proxy-target-class=true/相关代码//请把代码文本粘贴到下方(请勿用图片代替代码)@ControllerpublicclassOCheckassoInfoControllerextendsBaseController{@Autowired@Resource(name="error_log")Loggererror_log;@AutowiredOCheckassoInfoInfoServiceOCheckassoInfoInfoService;@PostMapping(value="/oCheckassoInfo/queryData")@ResponseBodypublicMapqueryData(){HashMapresult=newHashMap();try{result.put("status",EnuConfig.REQUEST_SUCCESS);result.put("data",OCheckassoInfoInfoService.queryDataAll(this.getHashDataEntity()));returnresult;}catch(Exceptione){error_log.info(e.getMessage());e.printStackTrace();result.put("status",EnuConfig.REQUEST_FAIL);result.put("data","系统错误");returnresult;}}}切面类@Aspect@ComponentpublicclassLogAop{publicLoggerservice_log=LogManager.getLogger("service");@Pointcut("execution(public*com.solantec.sensitive_fraud_yinlian.*.*.*.*())")privatevoidaspect(){}@Before(value="aspect()")publicvoidmethodBefore(JoinPointjoinPoint){ServletRequestAttributesrequestAttributes=(ServletRequestAttributes)RequestContextHolder.getRequestAttributes();HttpServletRequestrequest;service_log.info("===============requestcontext===============");if(requestAttributes!=null){request=requestAttributes.getRequest();service_log.info("requestaddr:"+request.getRequestURL().toString());service_log.info("requestmethod:"+request.getMethod());}service_log.info("params:"+Arrays.toString(joinPoint.getArgs()));service_log.info("targetmethod:"+joinPoint.getSignature());service_log.info("===============requestcontext===============");}@AfterReturning(returning="o",pointcut="aspect()")publicvoidmethodAfterReturing(Objecto){service_log.info("****************************result****************************");service_log.info("result:"+o);service_log.info("****************************result****************************");}}你期待的结果是什么?实际看到的错误信息又是什么?正常情况下控制台应该会打印两个===============requestcontext===============一个时controller的一个是service的但是service的死活就是没有
查看完整描述

2 回答

?
牛魔王的故事

TA贡献1830条经验 获得超3个赞

觉得是Pointcut表达式的问题,你可以看下Spring的Pointcut表达式问题,如果你service是基于接口变成,那你的表达式应该是没有扫描到子子包的内容,controller那边如果也有子包的话,子包下面应该也不会aop到的。如下两个表达式的区别定义在service包里的任意方法的执行:execution(com.xyz.service..*(..))
定义在service包和所有子包里的任意类的任意方法的执行:execution(com.xyz.service...*(..))
                            
查看完整回答
反对 回复 2019-05-06
  • 2 回答
  • 0 关注
  • 339 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信