# 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` ##### 唠唠嗑🐧(企鹅群) ![image](https://gitee.com/venfu/rangers-framework-spring/blob/master/static/img/qq-chat.jpg) ##### 下午茶🍵(支付宝) ![image](https://gitee.com/venfu/rangers-framework-spring/blob/master/static/img/zhifubao-pay.png)