手写简化版SpringBoot
2024-10-20 07:49:50
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
最新文章
- python3简单爬虫
- AC日记——产生数 codevs 1009 (弗洛伊德)(组合数学)
- NOIP199904求Cantor表
- C++中的容器类详解
- 309.	Best Time to Buy and Sell Stock with Cooldown
- 白书P60 - 硬币问题
- OpenGL中的投影使用
- 解决Flash挡住层用z-index无效的问题
- VS2008LINK : fatal error LNK1000: Internal error during IncrBuildImage
- chrome浏览器iframe兼容性问题,隐藏起来再显示滚动条消失?
- [USACO12JAN]爬山Mountain Climbing
- pfSense软件防火墙安装配置
- Spring Boot 整合Mybatis非starter时,mapper一直无法注入解决
- (转)python 全栈开发,Day74(基于双下划线的跨表查询,聚合查询,分组查询,F查询,Q查询)
- css实现自适应正方形
- 2017.7.4 ACM校内赛 Round 2
- 学习 C++,关键是要理解概念,而不应过于深究语言的技术细节
- 以json格式打印实体类信息
- 【动态规划去除冗余】NOIP2010-乌龟棋
- SQL Server 2012自动备份