乐趣区

关于spring:手把手教你写一个spring-IOC容器

摘要:spring 框架的根底外围和终点毫无疑问就是 IOC,IOC 作为 spring 容器提供的核心技术,胜利实现了依赖的反转:从主类的对依赖的被动治理反转为了 spring 容器对依赖的全局管制。明天就带大家手写一个 spring IOC 容器。

本文分享自华为云社区《手把手教你写一个 spring IOC 容器》,原文作者:技术火炬手。

spring 框架的根底外围和终点毫无疑问就是 IOC,IOC 作为 spring 容器提供的核心技术,胜利实现了依赖的反转:从主类的对依赖的被动治理反转为了 spring 容器对依赖的全局管制。明天就带大家手写一个 spring IOC 容器。

第 0 步(筹备工作):

(1)JDK1.8 及 java 环境变量
(2)maven 包及 maven 环境变量
(3)idea

第 1 步(创立我的项目,引入 tomcat 包)

PS:因为该项目标作用是模仿 spring 的局部性能,所以取名为 spring

(1)创立好的我的项目内容如下图:

(2)pom 文件的初始状态如下:

第 2 步:搭建主体框架

PS:一个失常的 spring 我的项目个别分为 controller 和 service 局部,此处临时疏忽数据库链接

(1)其中,TestController 实现性能,返回 name+“Hello World!”,援用 TestService

(2)而 TestService 和 TestServiceImpl 则别离实现性能

第 3 步:创立,并打上标签

PS:咱们须要很多标签,如 service,controller,还有 autowired 等

(1)创立各种标签(临时创立这些标签,前面不够再加)

(2)打上标签

因为 RequestMpping 前面须要跟门路,所以此处须要重写其 value() 办法,如下:

第 4 步:进入正题,创立一个 DisPatcherServlet 类,用于实现 IOC 容器性能

(1)DisPatcherServlet 继承 HttpServlet(留神增加依赖),并重写 doGet,doPost 办法

(2)创立一个 doDispatcher 办法,并被 doPost 援用

第 5 步:初始化

(1)暂停实现 doDispatcher,去重写初始化办法 init,初始化共分为五大步骤,如下

留神:顶端要加上属性类(Properties),且要 resource 中加 application.properties,并加上 scanPackage 属性,内容为需扫描的根目录

(2)加载配置文件实现,须要先配置一个 web.xml, 门路和内容如下:

门路:

内容:

剩下的内容,大家应该能看懂的吧

(3)下一步,应用递归,将所有 class 的门路存入一个汇合(classPaths)外面

(4)下一步,将打上了 controller 和 service 标签的类放入 ioc 容器中

(5)下一步,注入(通过 Autowired 标签从 IOC 容器中获取实例对象并赋值)

(6)获取所有的 RequestMapping 内容,并写到一个对象汇合中

第 6 步:回头实现 doDisPatcher 的步骤

(1)首先,设定 404(class notfound)
(2)前面一半,实现接口性能
PS1:判断 url 办法
PS2:依据 url 获取办法
PS3:获取办法下的所有参数

最初一步:执行 tomcat

so,

(1)你认为以上的内容是对的嘛?
(2)你认为你能失去想要的后果吗?

太天真了!!!

如果你依照我说的办法去运行,祝贺你,失去的后果是 not found!!!真正的挑战才刚刚开始:

第一,标签类的定义,如下,特地重要的是 Target

还须要补充一个 mapping

第二,TestController 类中,RequestParam 少了 value 属性,如果没有,则无奈传值。

第三,那么参数初始化,是不是也有一点问题呢?留神这段代码,传参的名字应该和什么相干?

好了 当初真的能够胜利了~~~

看看后果吧。

完结撒花~~~

点击关注,第一工夫理解华为云陈腐技术~

退出移动版