我想完成从控制器添加的JSON响应,例如状态属性.在这方面,我将使用Aspect类,其中@Around方法返回一个自定义类对象.
在这种情况下,我收到一个错误:
java.lang.ClassCastException: *.controller.RestResponse cannot be cast to java.util.List
有没有办法通过aspectJ annotation @Around将@ResponseBody类型的返回更改为自定义类型?我无法更改控制器代码!
控制器类:
@Controller
@RequestMapping(value = "/users")
public class UserController {
@Autowired
private UserService userService;
@RequestMapping(method = RequestMethod.GET)
@ResponseBody
public List get() throws InterruptedException {
return userService.getUsers();
}
...
}
Aspect类:
@Component
@Aspect
public class RestInterceptor {
@Pointcut("within(* controller.api.*)")
public void endpointMethod() {
}
@Around("endpointMethod()")
public RestResponse unifyResponse(ProceedingJoinPoint pjp) throws Throwable {
Object controllerResult = pjp.proceed();
RestResponse result = new RestResponse(0, controllerResult);
return result;
}
}
自定义类RestResponse:
public class RestResponse{
private int status;
private String message;
private Object data;
public RestResponse(int status, Object data) {
this.status = status;
this.data = data;
}
public RestResponse(int status, String message) {
this.status = status;
this.message = message;
}
//getters and setters
}