spring mvc+mybatis+mysql项目

来源:互联网 发布:bluehost 单独域名续费 编辑:程序博客网 时间:2024/06/14 09:28

  这几天整合这几个部分项目架子,现在 基本有点初形了。

  项目采用spring mvc作为请求流转与处理框架,mybatis为持久化层,mysql为数据库。

  事务让spring来进行管理。

  请求进入系统时,通过spring mvc的dispatcherServlet,流转到相应的Controller处理器。controller处理器再调用相应的service层,service层调用dao层与数据源交互。

  事务控制在service层。

  当业务代码需要回退事务时,需要抛出unchecked exception,这也是spring默认支持的回退事务的exception。当然你也可以配置其它checkException。

  如果业务代码有异常抛出(业务异常),这个异常有业务的提示信息告诉客户发生了这么一个业务错误。

  我们希望有一个统一的异常处理器来对异常做处理,它接收一个业务异常类,然后抽取开发者在业务代码中抛出异常时填入的异常信息,将其放入model。处理完后,返回到一个指定的统一业务异常界面,当然这里也可以返回客户当前操作的那个界面,然后在界面上统一显示这个异常信息。

  这个异常处理器由spring mvc提供,这里用@ControllerAdvice定义了一个业务异常处理类。

  代码如下:

  @EnableWebMvc
  @ControllerAdvice
  public class BizExceptionHandler {
    
    private static final Logger logger=Logger.getLogger(BizExceptionHandler.class);
    
    @ExceptionHandler(VerifyException.class)
    public ModelAndView handlerBizeException(VerifyException verifyException){
        logger.info("==========handler the bizException");
        ModelAndView modelAndView=new ModelAndView();
        modelAndView.setViewName(CodeInfoCode.REDIRECT_PREFIX+"/jsp/error/bizError.jsp");
        modelAndView.addObject(CodeInfoCode.ERROR_INFO, "错误信息");
        return modelAndView;
    }

 }

 这里的标注@ControllerAdvice,只有spring3.2才支持。并且@EnableWebMvc,这个标注必须有,否则这个异常处理类将不起作用。

 这里用了redirect。之后bizError.jsp中将用request.getParameter来获取异常信息。

 这样简化了整个业务异常的处理。


  抛异常处代码:

  throw new VerifyException("error info");

 

0 6
原创粉丝点击