# 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)