用基础项目来理解spring的作用

简介

spring官方的解释过于专业化,初学者可能比较难懂,接下来我将通过一个最基础的Java项目来尽可能的展示spring中的作用及spring的底层是如何来实现的。

项目结构

该项目是一个简单的JavaSE项目,没有maven或者tomcat等其他。只在控制台进行结果的输出。

首先我分为了四层分别是beans,controller,dao,service以及一个测试类。 

dao层和service层我只做了简单的输出语句,用来表示已经进入了此方法内部。

 现在有两个service层的类,分别是UserServiceImpl和UserServiceImpl01,红色框住是他们各自类中的业务,我们假设此时的业务较多,不只是简单的一个输出语句。在真实的业务中,如果我们想要进行更换service层的实现类,那么我们不仅需要去改此处的代码,并且还要对每一个调用到此service的代码部分都进行统一的修改。此时就会发现我们的工作量很大。最主要的一个原因就是代码的耦合度高,导致许多的代码紧密连接到了一块,不利于后期代码的维护。

那么spring就很好的帮助我们去解决了这样的一个问题,也就是他的依赖注入的一个功能,

  1. 依赖注入 (Dependency Injection, DI):Spring通过IoC容器自动管理对象之间的依赖关系,使得代码解耦,更容易测试。

主要部分演示

我们首先在D盘创建一个txt文件,其内容是我们要调用的某个类的全路径类名,然后通过字符流来读取文件中的内容。当读取完成后,我们就能通过反射的技术,获取到类对象,然后使用newInstance()方法来创建一个对象。之后继续调用service层的方法即可。

之后如果我们想要切换类对象,那么我们只需要修改文件中的内容即可,不需要在去代码中进行修改。这就是spring底层的一个实现原理,也就是反射。使用spring框架后,不用再自己创建要使用的对象了。而是由 Spring 容器统一管理,自动“注入”,注入即赋值。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/404960.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《黑神话悟空》2024官方配置要求一览

黑神话悟空配置要求 1080P 高画质推荐6650xt和4060以上的显卡高画质 全景光追推荐4060 2k 高画质推荐4060ti/7700x以上的显卡 高画质全景光追推荐4070 4K 高画质推荐4070s起步 高画质全景光追推存4080S 一、官方配置要求一览 1、最低配置: 需要 64 位处理器和操作系…

什么是逃逸分析

如何快速判断是否逃逸就看方法内new的对象实体是否能够被外部方法进行调用 什么是逃逸分析 在java虚拟机中,对象是在java堆中分配内存的,这是一个普遍的常识。但是,有一种特殊情况,那就是如果经过逃逸分析(escape an…

[HDCTF 2023]Welcome To HDCTF 2023

方法一:找个炸弹死掉,flag就出现 方法二:查看页面源码,发现底部assets/js/game.js 复制后访问看到jsfuck编码 复制到控制台查看flag

功能测试与自动化测试详解

🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快 什么是自动化测试? 自动化测试是指利用软件测试工具自动实现全部或部分测试,它是软件测试的一个重要组成 部分,能完成许多手工测试无法实…

【数据结构入门】二叉树之堆的实现

文章目录 前言一、树1.1 树的概念1.2 树的相关概念 二、二叉树2.1 二叉树的概念2.2 特殊的二叉树2.3 二叉树的性质 三、堆3.1 堆的概念3.2 堆的性质3.3 堆的存储3.4 堆的实现3.4.1 堆的初始化3.4.2 堆的销毁3.4.1 堆向上调整算法3.4.2 堆向下调整算法3.4.3 堆的创建3.4.4 堆的插…

ID3算法详解:构建决策树的利器

目录 引言 ID3算法概述 算法基础 信息熵 ​编辑 信息增益 ID3算法步骤 决策树 概念: 核心: 节点 1. 根节点 2. 非叶子节点 3. 叶子节点 引言 在机器学习领域,决策树是一种非常流行的分类和回归方法。其中,ID3算法作为决策树算法…

尚品汇-网关过滤用户请求、登录流程(三十五)

目录: (1)用户认证与服务网关整合 (2)server-gateway网关配置 (3)在服务网关中判断用户登录状态 (4)登录流程 (1)用户认证与服务网关整合 实…

百度 测试|测试开发 面试真题|面经 汇总

百度测开 开发测试工程师 提前批一二三面面经 事业群:MEG base:北京 一面:2022.8.12 时长:50min 自我介绍 个人项目,我的项目是围绕着学校课程的项目来的,面试官就让我介绍这门课讲了些什么 &#xf…

构建实时数据仓库:流式处理与实时计算技术解析

目录 一、流式处理 请求与响应 批处理 二、实时计算 三、Lambda架构 Lambda架构的缺点 四、Kappa架构 五、实时数据仓库解决方案 近年来随着业务领域的不断拓展,尤其像互联网、无线终端APP等行业应用的激增,产生的数据量呈指数级增长,对海量数…

前端开发攻略---彻底弄懂跨域解决方案

目录 1、浏览器的同源策略 1.1 源 1.2 同源与非同源 1.3 同源请求与非同源请求 2、跨域受到的限制 3、注意点 4、CORS解决Ajax跨域问题 4.1 CORS概述 4.2 CORS解决简单请求跨域 4.3 简单请求与复杂请求 4.4 CORS解决复杂请求跨域 4.5 借助CORS库快速完成配置 5、JS…

计算机毕业设计选什么题目好? springboot java沉浸式戏曲文化体验系统

✍✍计算机毕业编程指导师 ⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流! ⚡⚡ Java、…

【生物特征识别论文分享】基于深度学习的掌纹掌静脉识别

(待更新)基于深度学习的生物特征识别(手掌静脉、手背静脉、手指静脉、掌纹、人脸等)论文模型总结 。具体方法包括:基于特征表征、基于传统网络设计与优化、基于轻量级网络设计与优化、基于Transformer设计与优化、基于…

ES与MySQL数据同步实现方式

1.什么是数据同步: 1.Elasticsearch中的酒店数据来自于mysql数据库,因此mysql数据发生改变时,Elasticsearch也必须跟着改变,这个就是Elasticsearch与mysql之间的数据同步 2.数据同步实现方式: 常见的数据同步方案有三种&#x…

7.2 算法设计与分析

分治法(考的概率较低) 回溯法(考的概率较低) 动态规划法(考的概率较高) 1

Python 办公自动化 处理 Excel 数据 【1】推荐

话说学好办公自动化,走遍天下都不怕!!! 好的,现在开始。 因为是一些办公自动化的应用场景,所以需要电脑支持excel、word和ppt以及python的运行环境。 如果有电脑不支持Excel word ppt的以及python环境下载安装配置可…

交通感知与车路协同系统-计算机毕设Java|springboot实战项目

🍊作者:计算机毕设匠心工作室 🍊简介:毕业后就一直专业从事计算机软件程序开发,至今也有8年工作经验。擅长Java、Python、微信小程序、安卓、大数据、PHP、.NET|C#、Golang等。 擅长:按照需求定制化开发项目…

QT:事件机制

一、事件机制 qt的核心机制:对象树、信号和槽、事件机制 1.1概念 就是当这件事情发生时,自动执行对应的功能代码。该某块功能代码是虚函数,只需重写该虚函数,即可执行重写的代码。 1.2事件处理简介 1. 什么是事件? (重…

【教学类-76-01】20240820书包01(图案最大化)

背景需求 通义万相生成图片,把图案最大化的方法(切掉白边) 【教学类-75-01】20240817“通义万相图片最大化透明png”的修图流程-CSDN博客文章浏览阅读1.6k次,点赞56次,收藏17次。【教学类-75-01】20240817“通义万相…

【Android 笔记】记移植OpenCV4.8图像人脸识别

前言 因业务需要,使用大屏端摄像头捕获图像,且要识别图像中人脸的数目以及从中随机抽取一人。 业务流程如下,调用摄像头预览、拍照,使用OpenCV库进行人脸识别,将识别到的人脸使用矩形框绘制出来,从识别的人…

【秋招笔试】8.18大疆秋招(第三套)-三语言题解

🍭 大家好这里是 春秋招笔试突围,一起备战大厂笔试 💻 ACM金牌团队🏅️ | 多次AK大厂笔试 | 编程一对一辅导 ✨ 本系列打算持续跟新 春秋招笔试题 👏 感谢大家的订阅➕ 和 喜欢💗 和 手里的小花花🌸 ✨ 笔试合集传送们 -> 🧷春秋招笔试合集 🍒 本专栏已收…