Spring Mvc与Tomcat的整理

Spring Mvc与Tomcat的整理

  • 在spring的源码基础上,新建一个模块springmvc-source-test,勾选gradle模块,选中java和web。
  • 在gradle的配置文件中,引入下面2个依赖
    // https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api
    compileOnly group: 'javax.servlet', name: 'javax.servlet-api', version: '4.0.1'
    compile(project(":spring-webmvc"))
/**
 * @author WGR
 * @create 2021/11/4 -- 9:46
 */
public class MyWebApplicationInitializer implements WebApplicationInitializer {

    @Override
    public void onStartup(ServletContext servletContext) {

        // Load Spring web application configuration
        AnnotationConfigWebApplicationContext context = new AnnotationConfigWebApplicationContext();
        context.register(AppConfig.class);

        // Create and register the DispatcherServlet
        DispatcherServlet servlet = new DispatcherServlet(context);
        ServletRegistration.Dynamic registration = servletContext.addServlet("app", servlet);
        registration.setLoadOnStartup(1);
        registration.addMapping("/");
    }
}

  • 在新建一个controller类和配置类,具体如下:
/**
 * @author WGR
 * @create 2021/11/4 -- 9:51
 */
@RestController
public class HelloController {

    @GetMapping("/hello")
    public String sayHello(){
        return "Hello, SpringMVC!";
    }
}

/**
 * @author WGR
 * @create 2021/11/4 -- 9:50
 */
@ComponentScan("com.dalianpai.springmvc")
@Configuration
public class AppConfig {

}
  • 安装tomcat,并在idea中进行配置

Spring Mvc与Tomcat的整理
  • 由于spring-web的模块中是基于SPI机制实现的,在它的resources的包的下面,找到接口类的实现类,为SpringServletContainerInitializer,下面具体的如下图:

Spring Mvc与Tomcat的整理

最终调用FrameworkServlet#initServletBean方法,里面在继续调用initWebApplicationContext();进行初始化容器。

Original: https://www.cnblogs.com/dalianpai/p/15508017.html
Author: 天宇轩-王
Title: Spring Mvc与Tomcat的整理

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/540737/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 【设计模式】Java设计模式-建造者模式

    【设计模式】Java设计模式 – 建造者模式 😄 不断学习才是王道🔥 继续踏上学习之路,学之分享笔记👊 总有一天我也能像各位大佬一样🏆 @一个有梦有戏的人 @怒放吧德德…

    Java 2023年6月16日
    075
  • Effective Java 第三版—— 85. 其他替代方式优于Java本身序列化

    Tips书中的源代码地址:https://github.com/jbloch/effective-java-3e-source-code注意,书中的有些代码里方法是基于Java 9…

    Java 2023年5月29日
    080
  • 微服务SpringCloud之注册中心Consul

    Consul 介绍 Consul 是 HashiCorp 公司推出的开源工具,用于实现分布式系统的服务发现与配置。与其它分布式服务注册与发现的方案,Consul 的方案更&#822…

    Java 2023年5月30日
    0107
  • 对象数组排序 和 类比JDK实现 sort()的方法

    1.定义自己的 MyComparable 接口 1 package Test.treeSetDemo; 2 3 public interface MyComparable { 4 …

    Java 2023年6月8日
    041
  • spring-retry使用

    Spring Retry提供了自动重新调用失败的操作的功能。这在错误可能是暂时性的(例如瞬时网络故障)的情况下很有用。Spring Retry提供对流程和基于策略的行为的声明式控制…

    Java 2023年5月30日
    095
  • java基础篇—-类的方法常见错误

    预备知识梳理 什么是类? 首先先了解类与对象的关系 打个比方,制作一件衣服,得先有它的设计图,然后市场部在根据客户需求来确认数量,最后员工按照设计图来制作衣服. 在这个例子中,设计…

    Java 2023年6月8日
    0155
  • 多账号登录控制

    多账号登录控制 场景:java系统中用户账号登录实现控制,实现用户同时只能在一处登录 思路: 用户登录时添加用户的登录信息 用户退出时删除用户的登录信息 用户请求的session超…

    Java 2023年6月8日
    071
  • 发布spring cloud + vue项目

    服务器部署结构 1、服务器访问直接访问NGINX2、静态资源访问, nginx读取本地文件夹3、API接口路由, nginx把以api开头的访问都路由到业务逻辑服务器。 nginx…

    Java 2023年5月30日
    077
  • 基于数据库的自动化生成工具,自动生成JavaBean、自动生成数据库文档等(v4.1.2版)

    v4.1.2版更新震撼发布,功能更加强大,速度过来围观,此次版本更新如下: 1、随着程序的功能越来越强大,原来的定位和设计已经无法满足更高的要求,所以决定对本程序更名,更名为Tab…

    Java 2023年6月9日
    075
  • 在 Gradle 中使用 MyBatis Generator

    在 Intellij IDEA 中结合 Gradle 使用 MyBatis Generator 逆向生成代码 Info: JDK 1.8 Gradle 2.14 Intellij …

    Java 2023年5月30日
    092
  • Java 汉字拼音引擎

    // TODO posted @2022-06-21 00:04 龙凌云端 阅读(16 ) 评论() 编辑 Original: https://www.cnblogs.com/mi…

    Java 2023年5月29日
    079
  • Feign Interceptor 拦截器实现全局请求参数

    在第三方API对接中通常所有接口都需要在Header或Param放置固定参数(Token、开发者Key等),因为是SpringCloud开发,一般HTTP工具采用Feign。如果选…

    Java 2023年6月5日
    070
  • 我的大一总结

    图片不太清楚这里附上链接密码: w98f https://udld.github.io/ (老师总结)大一内容总结 编程语言初级使用 C,java (python 未完成) Lin…

    Java 2023年6月5日
    077
  • IDEA:库源与类的字节码不匹配

    在我配置pom.xml文件后,进行代码编辑,发现引入的方法并不是想要的内容,然后我就进入下载源码后进入到源码中发现我想要的方法和导入的jar包内的源码方法并不相同 ,于是到jar的…

    Java 2023年6月13日
    081
  • Hello World!

    Hello world! posted @2021-07-25 17:24 米斯特寒 阅读(18 ) 评论() 编辑 Original: https://www.cnblogs.c…

    Java 2023年6月13日
    083
  • linux 安装vsftpd

    一,安装vsftpd 1.安装: [root@localhost pluto]# yum -y install vsftpd 安装完后,有/etc/vsftpd/vsftpd.co…

    Java 2023年6月9日
    087
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球