现在需要在维护的项目中添加一个方法,不想动原来的逻辑所以想到用拦截器或者aop切面去扩展业务,但是需要获取service中的参数或者返回值都可以,一般的拦截器都是取controller层的request和response。求解决方法,有其他实现的技术也可以
## controller
@PostMapping("/test")
@ApiOperation("测试一下")
public QueryResult test(){
String kkk = "2222";
return QueryResult.success( aiLawUnifyFXService.test(kkk));
}
## serviceImpl:
@Transactional(rollbackFor = Exception.class,propagation= Propagation.REQUIRED)
@Override
public int test(String kkk) {
int ll = aiEventHandleBaseService.updateAppEventProcessStatus("AI22040710023600002", null,0);
System.out.println("-----------------------------------service返回----------------------------");
return ll;
}
## 这里跳转到了第二层serviceImpl 需要获取的就是层的eventId 参数或者返回值i
@Intercept
@Override
public int updateAppEventProcessStatus(String eventId, String handleStatus, String finishStatus) {
System.out.println("---------------222222222--------------------");
int i = aiEventHandleBaseDao.updateAppEventProcessStatus(eventId, handleStatus, finishStatus);
return i;
}
## 这里是写的拦截器 但是返回的都是controller中的
@Component
public class Ilegalinterceptor implements HandlerInterceptor {
@Autowired
private AiLawUnifyFXService aiLawUnifyFXService;
@Autowired
private AiEventHandleBaseService aiEventHandleBaseService;
@Override
public boolean preHandle(HttpServletRequest request,
HttpServletResponse response,
Object handler) {
System.out.println("开始拦截 LoginInterceptor.........");
String queryString = request.getQueryString();
System.out.println(queryString);
return true;
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
@Nullable ModelAndView modelAndView) {
String eventId = request.getParameter("eventId");
Object eventId1 = request.getAttribute("eventId");
System.out.println("结束 LoginInterceptor.........");
//业务代码 为了同一个事物机制写在这里
String queryString = request.getQueryString();
// aiLawUnifyFXService.update("AI22032216293300003",0);
System.out.println("结束 LoginInterceptor.........1111111111111111");
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler,
@Nullable Exception ex) {
System.out.println("完全结束 LoginInterceptor.........");
}
}
你都说aop了,那就aop呗