SpringMVC工作流程

启动tomcat后,首先执行ServletContainersInitConfig类,这个类也是SpringMVC创建的第四步,初始化Servlet容器,在这个类中继承AbstractDisparcherServletInitializer这个抽象类,然后创建容器,然后new了一个容器对象,加载SpringMVCconfig.class配置类,这个类中有@componentScan注解,

他会扫描控制器中带有@Controller的注解的方法

第二个方法的意思就是把前端发送的所有请求全部拦截下来交给SpringMVC处理

第三个方法是加载spring的,也就是除了表现层,比如service,dao都是归他管理,项目中要这样写:

也就是扫描SpringConfig这个类

也就是简化开发:

补充:你提供的代码是一个Spring MVC应用的初始化配置类,它继承自AbstractDispatcherServletInitializer。这个类负责创建和配置两个WebApplicationContext实例:一个用于Spring MVC的Servlet(DispatcherServlet)上下文,另一个用于应用的根上下文。这种分离允许你为Web层和非Web层分别配置不同的Bean。

在你提供的代码中,ServletContainersInitConfig类通过继承AbstractDispatcherServletInitializer来配置Spring MVC应用。这个类创建了三个WebApplicationContext对象,每个对象都扮演着不同的角色:

  1. 这个上下文是为DispatcherServlet创建的,它负责处理所有与Web相关的请求。
  2. 当Web请求到达时,DispatcherServlet会使用这个上下文来查找和执行相应的控制器(Controllers)。
  3. 这个上下文通常会注册Spring MVC的配置类(如SpringMVCConfig.class),其中包含视图解析器、控制器映射、静态资源处理等配置。
  4. 这个上下文是应用的根上下文,它负责管理非Web层的Bean,比如服务层(Services)、数据访问层(Repositories)等。
  5. 根上下文通常包含业务逻辑和数据访问逻辑的配置。
  6. 它通过注册SpringConfig.class来加载这些非Web相关的配置。
  7. 这个方法定义了DispatcherServlet应该处理的请求路径。在这个例子中,"/"表示DispatcherServlet将处理所有进入应用的请求。
  8. 这意味着所有的HTTP请求都会首先被DispatcherServlet捕获,然后根据配置的控制器逻辑进行处理。

在你提供的代码中,ServletContainersInitConfig类通过继承AbstractDispatcherServletInitializer来配置Spring MVC应用。这个类创建了三个WebApplicationContext对象,每个对象都扮演着不同的角色:

  1. 这个上下文是为DispatcherServlet创建的,它负责处理所有与Web相关的请求。
  2. 当Web请求到达时,DispatcherServlet会使用这个上下文来查找和执行相应的控制器(Controllers)。
  3. 这个上下文通常会注册Spring MVC的配置类(如SpringMVCConfig.class),其中包含视图解析器、控制器映射、静态资源处理等配置。
  4. 这个上下文是应用的根上下文,它负责管理非Web层的Bean,比如服务层(Services)、数据访问层(Repositories)等。
  5. 根上下文通常包含业务逻辑和数据访问逻辑的配置。
  6. 它通过注册SpringConfig.class来加载这些非Web相关的配置。
  7. 这个方法定义了DispatcherServlet应该处理的请求路径。在这个例子中,"/"表示DispatcherServlet将处理所有进入应用的请求。
  8. 这意味着所有的HTTP请求都会首先被DispatcherServlet捕获,然后根据配置的控制器逻辑进行处理。

工作流程:

  1. 当Web应用启动时,ServletContainersInitConfig类会被调用,创建两个AnnotationConfigWebApplicationContext实例,分别对应Servlet上下文和根上下文。
  2. 每个上下文实例会注册相应的配置类(SpringMVCConfig.classSpringConfig.class),这些配置类定义了应用中需要的Bean。
  3. 当Web请求到达服务器时,Servlet容器(如Tomcat)会根据getServletMappings方法的配置,将请求转发给DispatcherServlet
  4. DispatcherServlet使用其关联的Servlet应用上下文来处理请求,查找合适的控制器来处理请求,并返回响应。
  5. 在Spring框架中,根应用上下文和Servlet应用上下文可以共享某些Bean,这通过父上下文和子上下文的关系实现。通常,根上下文作为父上下文,而Servlet上下文作为子上下文。

通过这种方式,Spring MVC应用能够有效地分离Web层和非Web层的配置,同时保持它们之间的协作和数据共享。这种结构提高了应用的模块化和可维护性。

博客内容均系原创,未经允许严禁转载!
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇