弄浪的鱼

Spring MVC执行流程

简单来说:客户端发送请求 -> 前端控制器 DispatcherServlet 接受客户端请求 -> 找到处理器映射 HandlerMapping 解析请求对应的 Handler -> HandlerAdapter 会根据 Handler 来调用真正的处理器来处理请求,并处理相应的业务逻辑 -> 处理器返回一个模型视图 ModelAndView -> 视图解析器进行解析 -> 返回一个视图对象 -> 前端控制器 DispatcherServlet 渲染数据(Model)-> 将得到视图对象返回给用户。

AOP 是面向切面编程的编程思想,AOP 解决日志、权限等于横切性问题,将这些问题与主业务逻辑分开,达到与主业务逻辑结构的目的。

当我们在编写程序的时候,需要完成一些与核心业务逻辑无关的功能。比如说日志功能、权限校验功能。这些操作与对象的核心功能无关,并且散落在各种业务逻辑之中。我们将日志、权限控制这样的功能抽离成独立的切面,并在程序中设置连接点使用这些功能,这就是 AOP 的思想。

AOP 概念是 OOP(Object Oriented Programming) 概念的补充,我们使用面向对象的思想将程序的操作单位从函数变成了对象。但是面向对象的思想,面对与对象的核心功能无关的操作时显得很无力。AOP 的思想就能很优雅地处理这些散落在业务代码中的功能。

总的来说 OOP 思想关注纵向的业务逻辑,AOP 思想关注横向的功能扩展。两者相辅相成,互为补充。