# rangers-framework-spring
**Repository Path**: venfu/rangers-framework-spring
## Basic Information
- **Project Name**: rangers-framework-spring
- **Description**: 简单设计实践spring框架
- **Primary Language**: Java
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 1
- **Forks**: 0
- **Created**: 2017-04-08
- **Last Updated**: 2020-12-20
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
## 简单设计实践spring框架(手写spring)
`@author DeanKano`
## 核心流程:
##### Step1 配置依赖(仅仅依赖servlet-api包)
```asp
javax.servlet
servlet-api
2.4
```
##### Step2 定义一个核心控制器
> DkDispatcherServlet extends HttpServlet {...}
`在web.xml配置核心控制器`
```asp
dkDispatcher
com.dean.framework.DkDispatcherServlet
contextConfigLocation
classpath:application.properties
1
dkDispatcher
/*
```
##### Step3 自定义一些类spring的注解
> @DkController
> @DkService
> @DkAutowired
> @DkRequestMapping
> @DkRequestParam
##### Step4 配置容器启动时的初始化
> 1 加载配置文件 doLoadConfig(..)
> 2 扫描配置包路径 doScanner(..)
> 3 反射实例化加载到IOC容器中 doInstance();
> 4 DI依赖注入,针对IOC容器中加载到的类,自动对需要赋值的属性进行初始化操作 doAutowired();
> 5 初始化HandlerMapping initHandlerMapping();
##### Step5 执行请求,请求分发
> doDispatcher(req, resp);
##### Step6 启动
```asp
一 直接运行maven 插件 jetty:run
二 命令行启动,在cmd窗口执行:
`$mvn jetty:run`
```
##### Step6 验证功能
启动日志:
```asp
...
[INFO] Starting jetty 6.1.7 ...
[INFO] jetty-6.1.7
[INFO] No Transaction manager found - if your webapp requires one, please configure one.
Mapping: [/sample/query.do] ==>public void com.dean.framework.sample.UserAction.query(java.lang.String,javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse)
Mapping: [/sample/add.do] ==>public void com.dean.framework.sample.UserAction.addUser(java.lang.String,javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse)
Mapping: [/sample/remove.do] ==>public void com.dean.framework.sample.UserAction.removeUser(java.lang.String,javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse)
[INFO] Started SelectChannelConnector@0.0.0.0:8080
[INFO] Started Jetty Server
```
请求示例:
`http://localhost:8080/sample/query.do?name=Tom`
##### 唠唠嗑🐧(企鹅群)

##### 下午茶🍵(支付宝)
