手写简化版SpringBoot
Springboot项目全部依赖注解的,web工程是如何启动的
1 首先引入了Tomcat依赖,然后用java代码启动Tomcat容器,默认Tomcat版本是8.5版本
2 Tomcat是实现了servlet3.0规范,在servlet加载类的过程中会寻找实现了ServletContainerInitializer接口的类,spring为我们实现了这个接口的类是SpringServletContainerInitializer,最后又会去调用实现了WebApplicationInitializer接口的类,最后真正是实现WebApplicationInitializer接口的是这个AbstractAnnotationConfigDispatcherServletInitializer,然后在该类中去初始化spring容器和springmvc容器和servlet拦截的url
public class AppTomcat { public static void main(String[] args) throws ServletException, LifecycleException {
start();
} public static void start() throws ServletException, LifecycleException {
//创建Tomcat容器和设置端口
Tomcat tomcatServer = new Tomcat();
tomcatServer.setPort(); StandardContext ctx = (StandardContext) tomcatServer.addWebapp("/", new File("src/main").getAbsolutePath());
ctx.setReloadable(false);
WebResourceRoot resources = new StandardRoot(ctx); File additionWebInfClasses = new File("target/classes");
//告诉Tomcat项目的class目录,根目录
resources.addPreResources(
new DirResourceSet(resources, "/WEB-INF/classes", additionWebInfClasses.getAbsolutePath(), "/"));
//启动容器
tomcatServer.start();
tomcatServer.getServer().await(); } }
项目结构:
github下载地址:https://github.com/jake1263/MySpringBoot
手写简化版SpringBoot的更多相关文章
- 手写简化版printf函数
2019.02.01更新:经同学提醒,myprintf函数应有返回值为输出的字符数. 期末的大作业,手写一个myprintf函数,支持如下一些操作. 也就是 % -(负号控制左右对齐) 数(控制字段 ...
- 手写一个springboot starter
springboot的starter的作用就是自动装配.将配置类自动装配好放入ioc容器里.作为一个组件,提供给springboot的程序使用. 今天手写一个starter.功能很简单,调用start ...
- 纯手写SpringMVC到SpringBoot框架项目实战
引言 Spring Boot其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置. 通过这种方式,springboot ...
- 22 道高频 JavaScript 手写面试题及答案
实现防抖函数(debounce) 防抖函数原理:在事件被触发n秒后再执行回调,如果在这n秒内又被触发,则重新计时. 那么与节流函数的区别直接看这个动画实现即可. 手写简化版: // 防抖函数 cons ...
- 利用SpringBoot+Logback手写一个简单的链路追踪
目录 一.实现原理 二.代码实战 三.测试 最近线上排查问题时候,发现请求太多导致日志错综复杂,没办法把用户在一次或多次请求的日志关联在一起,所以就利用SpringBoot+Logback手写了一个简 ...
- SpringBoot项目里,让TKmybatis支持可以手写sql的Mapper.xml文件
SpringBoot项目通常配合TKMybatis或MyBatis-Plus来做数据的持久化. 对于单表的增删改查,TKMybatis优雅简洁,无需像传统mybatis那样在mapper.xml文件里 ...
- 手写一个类SpringBoot的HTTP框架:几十行代码基于Netty搭建一个 HTTP Server
本文已经收录进 : https://github.com/Snailclimb/netty-practical-tutorial (Netty 从入门到实战:手写 HTTP Server+RPC 框架 ...
- <数据结构系列1>封装自己的数组——手写动态泛型数组(简化版ArrayList)
哈哈,距离上一次写博客已经快过去半个月了,这这这,好像有点慢啊,话不多说,开始我们的手写动态泛型数组 首先是我们自己写一个自己的动态数组类,代码如下所示: public class Array< ...
- 自己手写一个SpringMVC 框架
一.了解SpringMVC运行流程及九大组件 1.SpringMVC 的运行流程 · 用户发送请求至前端控制器DispatcherServlet · DispatcherServlet收到请求调用 ...
随机推荐
- springboot使用jpa案例
1 创建entity实体类并生成数据库表 @Entity @Table(name="student") public class Student { @Id @GeneratedV ...
- mysql 获取星期几,dayofweek()函数
mysql> ; +------------------------+ | dayofweek(curdate())- | +------------------------+ | | +--- ...
- nginx重启 平滑重启
进入 ngiinx sbin目录下./nginx -c /usr/local/nginx/conf/nginx.conf -c参数指定了要加载的nginx配置文件路径 停止操作停止操作是通过向ngin ...
- ICEM-圆角正方体
原视频下载地址:https://pan.baidu.com/s/1c2cNgJm 密码: rci8
- 关于Java正则和转义中\\和\\\\的理解
定义 一个转义字符的目的是开始一个字符序列,使得转义字符开头的该字符序列具有不同于该字符序列单独出现时的语义. 转义就是指转换该字符的原本意义,从而变成另外的意义. \作为Java的转义字符 1.在j ...
- 【大数据】安装关系型数据库MySQL 安装大数据处理框架Hadoop
作业要求来自:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE2/homework/3161 1.安装Mysql 使用命令 sudo apt-get ins ...
- hadoop大作业
1.数据准备 2.把CSV添加到/bigdatacase/dataset中 3.检查前5行并删除第一行 4.将csv文件导入hadoop并检查前10行数据情况 5.数据文件导入hive 6.在Hive ...
- Servlet快速入门及运行流程
一.Servlet快速入门 1.创建一个web工程 2.在JavaResource中src下创建一个包名称为com.myxq.servlet 3.在创建的servlet包当中创建一个class文件起名 ...
- 从宿主机直接进入docker容器的网络空间
Docker dns nameserver 也是进入容器网络空间,监听53端口,但它通过iptable把端口映射到宿主机上,处理DNS请求的进程就在宿主机上. how does Docker Embe ...
- Git提交(PUSH)时记住密码 - 不用每次都输入密码
开发使用的团队搭建好的GitLab服务器来作为项目共享开发,由于我不是最高权限,没办法把我git生成的SSH-Key放到服务器里面去,所有只好在每次提交的时候配置git config来记录密码不过期来 ...