spring中统一到前端的返回值
在业务处理流程中抛出的异常,通过切面编程捕获后,给前端返回统一的消息格式
@ControllerAdvice
public class ControllerExceptionHandler {
Logger logger = LoggerFactory.getLogger(getClass());
@ExceptionHandler(TokenNullException.class)
@ResponseBody
public Result handle401(HttpServletRequest req, Exception e) {
return new Result<String>(401,e.getMessage(),null);
}
@ResponseBody
@ExceptionHandler(UserControllerException.class)
public Result addUserWrong(HttpServletRequest req, Exception e) {
return new Result<String>(-1,e.getMessage(),null);
}
}
在业务处理流程中抛出异常
@Transactional(propagation = Propagation.REQUIRED)
@Override
public User add(User user) {
List<User> userList = this.findAll();
for (User existUser : userList) {
if (existUser.getLoginname().equals(user.getLoginname())) {
throw new UserControllerException("dup loginname");
} else if (existUser.getUsername().equals(user.getUsername())) {
throw new UserControllerException("dup username");
} else if (existUser.getWorkId().equals(user.getWorkId())) {
throw new UserControllerException("dup workid");
}
}
if (!"男".equals(user.getFlagsex())&& !"女".equals(user.getFlagsex())) {
throw new UserControllerException("性别必须是男或女");
}
int count = iDao.insert("User.insertSelective",user);
if (count == 0) {
throw new UserControllerException("insert failed");
}
return user;
}