当前位置: 首页 > article >正文

SpringBoot 整合 SpringMVC:配置嵌入式服务器

  1. 修改和 server 相关的配置(ServerProperties):
    server.port=8081
    server.context‐path=/tx
    server.tomcat.uri‐encoding=UTF‐8
  2. 注册 Servlet 三大组件:Servlet、Fileter、Listener
    1. SpringBoot 默认是以 jar 包的方式启动嵌入式的 Servlet 容器来启动 SpringBoot 的 web应用,没有外部文件
    2. Servlet:
      //注册三大组件
      @Bean
      public ServletRegistrationBean myServlet(){
          ServletRegistrationBean registrationBean = new ServletRegistrationBean(new
                  MyServlet(),"/myServlet");
          return registrationBean;
      }
    3. FilterRegisttratinBean:
      @Bean
      public FilterRegistrationBean myFilter(){
          FilterRegistrationBean registrationBean = new FilterRegistrationBean();
          registrationBean.setFilter(new MyFilter());
          registrationBean.setUrlPatterns(Arrays.asList("/hello","/myServlet"));
          return registrationBean;
      }
    4. SErvletListenerRegistrationBean:
      @Bean
      public ServletListenerRegistrationBean myListener(){
          ServletListenerRegistrationBean<MyListener> registrationBean = new
                  ServletListenerRegistrationBean<>(new MyListener());
          return registrationBean;
      }
    5. SpringBoot 帮我们自动整合 SpringMVC 的时候,自动的注册 SpringMVC 的前端控制器:DispatherServlet
    6. 在 DispatherServletAutoConfiguration 中:
      @Bean(name = DEFAULT_DISPATCHER_SERVLET_REGISTRATION_BEAN_NAME)
          @ConditionalOnBean(value = DispatcherServlet.class, name =
                  DEFAULT_DISPATCHER_SERVLET_BEAN_NAME)
          public ServletRegistrationBean dispatcherServletRegistration(
                  DispatcherServlet dispatcherServlet) {
              ServletRegistrationBean registration = new ServletRegistrationBean(
                      dispatcherServlet, this.serverProperties.getServletMapping());
      //默认拦截: / 所有请求;包静态资源,但是不拦截jsp请求; /*会拦截jsp
      //可以通过server.servletPath来修改SpringMVC前端控制器默认拦截的请求路径
              registration.setName(DEFAULT_DISPATCHER_SERVLET_BEAN_NAME);
              registration.setLoadOnStartup(
                      this.webMvcProperties.getServlet().getLoadOnStartup());
              if (this.multipartConfig != null) {
                  registration.setMultipartConfig(this.multipartConfig);
              }
              return registration;
          }

使用外置的 Servlet 容器:

  1. 嵌入式 Servlet 容器:应用打成可执行的 jar 包
  2. 优点:简单、便携
  3. 缺点:默认不支持 JSP、优化定制比较复杂
  4. 外置的 Servlet 容器:外面安装 Tomcat ,应用打包方式为 war 包
  5. 步骤:
    1. 创建一个 war 项目
    2. 将嵌入式的 Tomcat 指定为 provided
      <dependency>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring‐boot‐starter‐tomcat</artifactId>
          <scope>provided</scope>
      </dependency>
    3. 配置项目的目录结构:

    4. 部署 Tomcat
    5. 必须编写一个 SpringBootSerbletInitializer 的子类,并调用 configure 方法
      public class ServletInitializer extends SpringBootServletInitializer {
          @Override
          protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
              return application.sources(DemoApplication.class);
          }
      }

    6. 启动服务即可使用
  6. 原理:
    1. jar 包:执行 SpringBoot 主类的 main 方法,启动 IOC 容器,创建嵌入式的 Servlet 容器
    2. war 包:启动服务器,服务器启动 SpringBoot 应用[ SpringBootServletInitializer ],启动 IOC 容器

http://www.kler.cn/a/529392.html

相关文章:

  • 全覆盖路径规划-精准细胞覆盖算法
  • OpenAI o3-mini全面解析:最新免费推理模型重磅发布
  • 第十二章 I 开头的术语
  • Contrastive Imitation Learning
  • DeepSeek大模型技术深度解析:揭开Transformer架构的神秘面纱
  • Teleporters( Educational Codeforces Round 126 (Rated for Div. 2) )
  • Redis集群理解以及Tendis的优化
  • nginx 报错404
  • 为AI聊天工具添加一个知识系统 之83 详细设计之24 度量空间之1 因果关系和过程:认知金字塔
  • Heptagon 迭代器
  • 【含文档+PPT+源码】基于微信小程序农家乐美食餐厅预约推广系统
  • P_all: 投影矩阵(Projection Matrix)
  • AI智慧社区--人脸识别
  • 详解CSS `clear` 属性及其各个选项
  • Rust 控制流语法详解
  • 蓝桥杯之c++入门(二)【输入输出(上)】
  • Lesson 129 70 miles an hour
  • 【C++】 STL -- 容器(2)
  • AI-on-the-edge-device - 将“旧”设备接入智能世界
  • 【开源免费】基于Vue和SpringBoot的校园网上店铺系统(附论文)
  • 区间加法 II - 解题思路与代码解析
  • 14-9-2C++STL的set容器
  • PHP XML操作指南
  • 音视频入门基础:RTP专题(8)——使用Wireshark分析RTP
  • 【Convex Optimization Stanford】Lec5. Duality 对偶问题
  • Java设计模式:行为型模式→访问者模式