# simple-spring-boot
**Repository Path**: terwer/simple-spring-boot
## Basic Information
- **Project Name**: simple-spring-boot
- **Description**: 简易版的SpringBoot实现
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2022-01-05
- **Last Updated**: 2022-06-06
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# simple-spring-boot
简易版的SpringBoot实现
# 实现要点
自定义简易版SpringBoot,实现SpringBoot MVC及内嵌Tomcat启动、DispatcherServlet注册和组件扫描功能。
程序通过main方法启动,可以自动启动tomcat服务器
可以自动创建和加载DispatcherServlet组件到ServletContext中
可以自动通过@ComponentScan扫描Controller等组件
Controller组件可以处理浏览器请求,返回响应结果
# 实现思路
(1)创建maven工程,导入以下依赖:
```
1.8
org.apache.tomcat.embed
tomcat-embed-core
8.5.32
org.springframework
spring-context
5.0.8.RELEASE
org.springframework
spring-webmvc
5.0.8.RELEASE
org.springframework.boot
spring-boot-maven-plugin
```
(2)创建SpringApplication 类,编写run方法(方法中要求完成tomcat的创建及启动)
(3)创建spring的配置类 AppConfig该类上要通过@ComponentScan来进行包扫描
(4)创建MyWebApplicationInitializer实现WebApplicationInitializer接口,重写onstartup方法(WebApplicationInitializer实现web.xml的配置)
提示:仿写上面Spring官方给出的例子,完成AppConfig的注册,并基于java代码的方式初始化DispatcherServlet
(5)创建MySpringServletContainerInitializer,实现ServletContainerInitializer接口,重写onstartup方法,方法中调用第4步中MyWebApplicationInitializer的onstartup方法
提示:Servlet 3.0+容器启动时将自动扫描类路径以查找实现Spring的Webapplicationinitializer接口的所有实现,将其放进一个Set集合中,提供给ServletContainerInitializer中onStartup方法的第一个参数。
(6)创建文件:META-INF/services/javax.servlet.ServletContainerInitializer,在该文件中配置ServletContainerInitializer的实现类MySpringServletContainerInitializer
(7)编写一个Controller测试类及目标方法,响应输出“hello”即可
(8)编写一个启动类MyRunBoot,通过执行main方法启动服务
提示:main方法调用第2步中SpringApplication的run方法启动
(9)通过浏览器对目标方法进行访问