返回顶部
首页 > 资讯 > 后端开发 > Python >手把手教你写一个spring IOC容器的方法
  • 479
分享到

手把手教你写一个spring IOC容器的方法

2024-04-02 19:04:59 479人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

本文分享自华为云社区《手把手教你写一个spring ioc容器》,原文作者:技术火炬手。 spring框架的基础核心和起点毫无疑问就是ioC,IOC作为spring容器提供的核心技术

本文分享自华为云社区《手把手教你写一个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属性,如果没有,则无法传值。

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

好了 现在真的可以成功了~~~

看看结果吧。

完结撒花~~~

到此这篇关于手把手教你写一个spring IOC容器的文章就介绍到这了,更多相关spring IOC容器内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: 手把手教你写一个spring IOC容器的方法

本文链接: https://lsjlt.com/news/123364.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 手把手教你写一个spring IOC容器的方法
    本文分享自华为云社区《手把手教你写一个spring IOC容器》,原文作者:技术火炬手。 spring框架的基础核心和起点毫无疑问就是IOC,IOC作为spring容器提供的核心技术...
    99+
    2024-04-02
  • 手把手带你实现一个萌芽版的Spring容器
    从什么是IOC开始? Spring——春天,Java编程世界的春天是由一位音乐家——Rod Johnson带来的。 Rod Johns...
    99+
    2024-04-02
  • Linux | 手把手教你写一个进度条小程序
    文章目录 一、前言二、理解 '\r' 与 '\n'1、可显字符与控制字符2、老式键盘 三、缓冲区的概念理解1、五个代码段 + 现象分析2、观察现象,提出问题❓3、行缓冲的概念 + 疑难解...
    99+
    2023-08-31
    linux 运维 服务器
  • 手把手教你写一个uniapp通用页面组件
    目录前言需求开发初始化页面数据实现状态栏与底部配置页面使用总结前言 做移动端项目时为了兼容各种手机型号的界面,最好有一个统一的页面组件对样式做统一处理,例如:判断是否显示状态栏,是否...
    99+
    2022-12-15
    uniapp 组件开发 uniapp组件使用 uniapp通用页面组件
  • 手把手教你实现一个 Python 计时器
    为了更好地掌握 Python 计时器的应用,我们后面还补充了有关Python类、上下文管理器和装饰器的背景知识。因篇幅限制,其中利用上下文管理器和装饰器优化 Python 计时器,将在后续文章学习,不在本篇文章范围内。Python 计时器首...
    99+
    2023-05-14
    Python 编程语言 计时器
  • 手把手教你用Vue3写播放器
    TODO实现播放/暂停;实现开始/结束时间及开始时间和滚动条动态跟随播放动态变化;实现点击进度条跳转指定播放位置;实现点击圆点拖拽滚动条。页面布局及 css 样式如下<template> <div class=&quo...
    99+
    2023-05-14
    vue3
  • 手把手教你写一个vue全局注册的Toast的实现
    目录前言:我们先思考下面的问题:首先:然后:后来:再且:前言: 前几天客户经理不让我用某饿了么之类的UI库做一个轻提示之类的组件,当时一想我是饿了么战士,怎么会写哪个东西,然后我就想...
    99+
    2024-04-02
  • 手把手教你写Maven的archetype项目脚手架
    目录一、背景二、手写普通单模块项目的archetype三、手写maven多module的项目骨架archetype1.多模块骨架项目的项目结构2.模板工程定义描述文件3.子模块pom...
    99+
    2024-04-02
  • Python爬虫系列(一)——手把手教你写Python爬虫
    1. 什么是爬虫? 根据百度百科的定义,网络爬虫,又称为网页蜘蛛,是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。 人们如今的生活,大都离不开网络,发一条微信,电子支付买一杯奶茶,刷一条微博...
    99+
    2023-09-14
    爬虫 python 数据挖掘
  • 手把手教你win7还原系统的方法
    目前还有很多人在使用微软经典操作系统win7,不过其中一些用户在使用过程中遇到了一些系统问题。一般我们可以通过win7系统的还原功能进行修复,那么win7怎么还原系统?下面就给大家演示下win7还原系统的方法。具体的步骤如下:1、打开桌面的...
    99+
    2023-07-15
  • 手把手教你用js实现一个拖拽效果
    .markdown-body{word-break:break-word;line-height:1.75;font-weight:400;font-size:15px;overflow-x:hidden;color:#333}.markd...
    99+
    2023-05-14
    拖拽 javascript
  • 手把手教你实现一个JavaScript时间轴组件
    目录这是开头开发时间准备工作中间的白色竖线时间刻度鼠标移动时显示所在时间拖动时间轴调整时间分辨率绘制时间段多个时间轴显示自定义元素总结这是开头 本文给大家带来一个时间轴的组件开发教程...
    99+
    2022-11-13
    JavaScript时间轴组件 JavaScript时间轴
  • 手把手教你jupyter notebook更换环境的方法
    目录一、查看conda现有的环境二、激活现有环境三、安装ipykernel包四、将环境加载进jupyter中五、打开jupyter notebook 更换环境附:创建新环境的方法总结...
    99+
    2023-05-20
    jupyter notebook更改环境 jupyter notebook虚拟环境 jupyter notebook切换虚拟环境
  • 手把手教你纯净版win7下载方法
    有的小伙伴想要下载win7系统,但是怕下载到带捆绑软件的系统,向小编询问纯净版win7下载安装教程,现在就教一教大家纯净版win7下载方法。纯净版win7下载方法:可通过win7之家下载,下载地址——纯净版win7下载。下载完之后可能有的小...
    99+
    2023-07-15
  • 百闻不如一码!手把手教你用Python搭一个Transformer
    大数据文摘出品编译:林安安、钱天培与基于RNN的方法相比,Transformer 不需要循环,主要是由Attention 机制组成,因而可以充分利用python的高效线性代数函数库,大量节省训练时间。可是,文摘菌却经常听到同学抱怨,Tran...
    99+
    2023-06-02
  • 手把手教你搭建一个vue项目的完整步骤
    目录一、环境准备1、安装node.js2、检查node.js版本3、为了提高我们的效率,可以使用淘宝的镜像源二、搭建vue环境1、全局安装vue-cli三、创建vue项目1、用cmd...
    99+
    2024-04-02
  • 手把手教你利用Python创建一个游戏窗口
    目录前言 安装Pyagme检查是否安装Pygame:  一 (检查python是否配置环境变量)检查是否安装Pygame:  二 (检查pygame是否...
    99+
    2024-04-02
  • 怎么手撸一个Spring容器
    这篇文章主要介绍了怎么手撸一个Spring容器的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇怎么手撸一个Spring容器文章都会有所收获,下面我们一起来看看吧。从什么是IOC开始?Spring&mdas...
    99+
    2023-06-29
  • 手把手教你打造一个功能齐全的 Laravel 查询过滤器
    查询过滤器... 开发系统时常见的问题。但是当开始编写代码时,每个开发人员都会出现许多熟悉的问题:「我应该把这个查询逻辑放在哪里?我应该如何管理它以方便使用?」。老实说,对于我开发的每个项目,我都会根据以前创建的项目的经验以不同的风格写作。...
    99+
    2022-06-17
    query filter
  • 手把手教你将一个旧的大型项目迁移到 Py
    一年半前,我们就决定使用 Python 3 了。我们已经讨论了很长时间,现在是时候使用了!现在这个过程已经结束了,我们已经把生产环境的最后部署都迁移到了 Python 3整个代码库大约有 240 k 行,不包括空行和注解。这是一个基于 We...
    99+
    2023-01-31
    个旧 手把手教你 项目
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作