# spring-1.0
**Repository Path**: coolingme/spring-1.0
## Basic Information
- **Project Name**: spring-1.0
- **Description**: Spring基本实现思路
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2020-10-23
- **Last Updated**: 2024-08-24
## Categories & Tags
**Categories**: Uncategorized
**Tags**: Spring
## README
# Spring基本实现思路
## 1.配置阶段
### 1.1 配置web.xml
配置自定义的DispatcherServlet
### 1.2 设置init-param 指定配置文件
contextConfigLocation
classpath:application.properties
### 1.3 设置url-pattern 映射请求路径
coolingmeMvc
/*
### 1.4 配置注解
- @MeController
- @MeService
- @MeRequestMapping
- @MeAutowired
## 2.初始化阶段
### 2.1.1 调用init()方法
- 加载配置文件
### 2.1.2 IOC容器初始化
放在`Map`容器中
- key 为 对象名
- value 为 对象实例
### 2.2 扫描相关的类
- 设置配置文件 scan-package=com.coolingme 作用等于@ComponentScan
### 2.3 创建实例化并保存至IOC容器 [IOC]
- 通过反射机制将类实例化放入IOC容器中
### 2.4 进行DI操作 [DI]
- 扫描IOC容器中的实例,给没有赋值的属性自动赋值
### 2.5 初始化HandlerMapping [MVC]
- 将一个URL和一个Method进行一对一的关联映射Map
- key 为 URL
- Method 为 方法实例
## 3. 运行阶段
### 3.1 调用doPost()/doGet()
Web容器调用doPost()/doGet()方法,获取request/response对象
### 3.2 匹配HandlerMapping
从request中获取url,找到对应的Method
### 3.3 调用对应方法
利用反射调用方法并获取结果
### 3.4 返回结果至浏览器
`response.getWrite().write("...")`
## 4.使用Jetty插件启动
#### 访问路径
- [http://127.0.0.1:8080/demo/index](http://127.0.0.1:8080/demo/index)
- [http://127.0.0.1:8080/demo/add?a=1&b=2](http://127.0.0.1:8080/demo/add?a=1&b=2)
- [http://127.0.0.1:8080/demo/hello?name=joey](http://127.0.0.1:8080/demo/hello?name=joey)
- [http://127.0.0.1:8080/demo/remove?id=1](http://127.0.0.1:8080/demo/remove?id=1)