清晰易懂IoC

news2024/11/18 9:24:37

1.IoC的目的在于让服务端的代码不需要改动

 这段代码的问题在于,如果想要调用不同的dao层,就需要在服务端的代码Service层中进行改动

比如要调用dao1,Service层代码就是Dao dao1=new Dao1()

比如要调用dao2,Service层代码就是Dao dao2=new Dao2()

服务端的代码应该尽量不改动,客户端的代码可以随意改动

 改进:这样服务端(Service层)的代码不用改动,你客户端传进来Dao1类的对象,那就调用Dao1,那就调用Dao1类的方法。如果客户端传进来Dao2类的对象,那就调用Dao2类的方法

之前,服务端来主动创建对象,控制权在服务端,服务端的代码是需要改变的

现在,服务端被动的接收对象,控制权在用户手上,服务端的代码是写死的,不需要改变

2.通过xml文件的方式实现IoC

这是一个Hello类 

 在xml 文件中进行配置:

 id=''hello"   id是这个bean标签在xml文件中的唯一标识符

class=“XXXXX”  表示这个类的路径,这个类的位置

name=“str‘  表示给Hello这个类的str这个属性进行赋值

value=”Spring“  表示给str这个属性赋值Spring(注意这里如果是ref=”XXX“,表示给这个属性赋值一个对象,这个对象已经在Spring容器里面创建好了)

最后就可以不用new的方式就创建出一个Hello类的对象

 这样服务端代码就彻底不需要改了,只需要去xml文件中进行修改就行

3.依赖注入的三种方式

1.构造函数注入   在UserController这个类中注入了userService这个对象属性

public class UserController {
    private UserService userService;

    public UserController(UserService userService) {
        this.userService = userService;
    }
}

2.Setter方法注入   在UserController这个类中注入了userService这个对象属性

public class UserController {
    private UserService userService;

    public void setUserService(UserService userService) {
        this.userService = userService;
    }
}

3.注解注入

public class UserController {
    @Autowired
    private UserService userService;
}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【JavaScript 递归】判断两个对象的键值是否完全一致,支持深层次查询,教你玩转JavaScript脚本语言

博主:東方幻想郷 Or _LJaXi 专栏分类:JavaScript | 脚本语言 JavaScript 递归 - 判断两个对象的键值 🌕 起因🌓 代码流程⭐ 第一步 判断两个对象的长度是否一致⭐ 第二步 循环 obj 进行判断两个对象⭐ 第三步 递归条件判断两个对象…

ChatGPT:你真的了解网络安全吗?浅谈攻击防御进行时之网络攻击新威胁

ChatGPT:你真的了解网络安全吗?浅谈网络安全攻击防御进行时 网络攻击新威胁1) 人工智能的应用2) 5G和物联网的崛起3) 云安全4) 社交工程的威胁 总结 ChatGPT(全名:Chat Generative Pre-trained Transformer)&#xff0…

大龄、零基础,想转行做网络安全。怎样比较可行?这届粉丝可真难带

昨晚上真的给我气孕了。 对于一直以来对网络安全兴趣很大,想以此作为以后的职业方向的人群。 不用担心,你可以选择兼顾工作和学习,以步步为营的方式尝试转行到网络安全领域。 那么,网络安全到底要学些什么呢? &…

getline()与cin.getline()

文章目录 1.getline2.cin.getline3.区别 1.getline 读取一行内容。定义为: istream& getline (istream& is, string& str, char delim);参数一:istream &is 表示一个输入流,譬如cin; 参数二:string…

Tensorflow2基础代码实战系列之双层RNN文本分类任务

深度学习框架Tensorflow2系列 注:大家觉得博客好的话,别忘了点赞收藏呀,本人每周都会更新关于人工智能和大数据相关的内容,内容多为原创,Python Java Scala SQL 代码,CV NLP 推荐系统等,Spark …

自动化测试工具selenium的使用方法

一、前言 由于requests模块是一个不完全模拟浏览器行为的模块,只能爬取到网页的HTML文档信息,无法解析和执行CSS、JavaScript代码,因此需要我们做人为判断; selenium模块本质是通过驱动浏览器,完全模拟浏览器的操作&…

Python爬虫入门案例6:scrapy的基本语法+使用scrapy进行网站数据爬取

几天前在本地终端使用pip下载scrapy遇到了很多麻烦,总是报错,花了很长时间都没有解决,最后发现pycharm里面自带终端!(狂喜),于是直接在pycharm终端里面写scrapy了 这样的好处就是每次不用切换路…

项目风险应对策略:项目经理应对不确定性的指南

风险应对是项目经理管理项目未来的工具箱。它可以帮助管理人员弄清楚可能会出现什么问题,并让他们有机会为这些问题做好准备。 对抗负面风险的5种策略 如果没有风险管理计划,项目可能会因意外问题或不良风险而迅速脱轨。什么策略可以用来对抗负面风险&…

Salesforce认证|新鲜出炉销售代表认证!

Salesforce一直致力于为专业人士提供测试知识与技能的方法,现在终于轮到销售人员了! 前不久,Salesforce宣布推出销售代表认证,这不仅是首个面向销售人员的认证,也是为数不多的非技术类、非顾问类认证,这为…

记录 aaPanel 安装环境失败的经历及解决方案

最近我在一台Debian 11的国外服务器上安装aaPanel(即宝塔面板的国际版)。在安装完面板后,我继续安装LNMP环境。几分钟后,aaPanel提示LNMP环境已经安装成功。然而,在创建站点时,却提示环境没有安装。 问题排…

财务共享中心成功建立!用友帮助河南水投集团打造财务效率新高地

河南水投集团作为省级水务集团,自成立以来一直坚持以资产筹集资金,以资金建设项目,以运营扩张资本。即使在面对经济下行压力及疫情影响双重挑战下,仍坚持结果导向,通过项目建设推动发展,保持了较好的发展态…

MyBatisPlus更新字段为null的正确姿势以及lambda方式的条件字段解析之源码解析

文章目录 [toc] 1.问题2.原因3.解决方法3.1错误方法方式一:配置全局字段策略方式二:在实体上添加字段策略注解 3.2正确姿势方式一:使用LambdaUpdateWrapper (推荐)方式二:使用UpdateWrapper方式三 总结 1.问…

沉降仪工作原理

输电线路杆塔倾斜北斗在线监测装置 一、产品概述 杆塔、铁塔在时间、自然因素的影响下,发生的倾斜、偏离等现象,而在人工巡检电力设施时是不容易通过人眼判别的,在日积月累的变化中,铁塔、杆塔会因倾斜幅度过大进一步引发严重的坍…

基于 Bert 论文构建 Question-Answering 模型

访问【WRITE-BUG数字空间】_[内附完整源码和文档] 摘要 本文拜读了提出 Bert 模型的论文,考虑了在 Bert 中算法模型的实现.比较了 Bert 与其他如 Transformer、GPT 等热门 NLP 模型.BERT 在概念上很简单,在经验上也很强大。它推动了 11 项自然语言处理任…

“她经济”崛起,茉莉智慧如何以科技赋能月子中心迭代升级?

近年来,利好生育政策频出,女性消费能力不断提升,以月子中心为核心的产后护理赛道发展势头良好。据iiMedia Research数据,2022年中国月子中心市场规模突破223.0亿元。iiMedia Research市场调查显示,93.5%的受访者认为产…

ubuntu命令记录

centos 下载地址: 网易镜像:http://mirrors.163.com/centos/6/isos/ 搜狐镜像:http://mirrors.sohu.com/centos/6/isos/ VM与LINUX的安装(虚拟机的安装) 注意:a.必须开启虚拟化(一般电脑都默认…

BFT 最前线 | 王小川:2033机器智慧将超人类;扎克伯格财富暴涨;哈工大:能跳跃的昆虫机器人;北京支持“1+4”机器人领域

原创 | 文 BFT机器人 名人动态 CELEBRITY NEWS 01 王小川:10年后机器智慧将超过人类 年底将推出对标GPT-3.5的模型 科技预言大师雷库兹韦尔说人工智能的奇点,机器智慧超过人类会发生在2045年,王小川的判断比这更激进,他认为这一…

复杂的C++继承

文章目录 什么是继承继承方式赋值规则继承中的作用域(隐藏)子类中的默认成员函数需要自己写默认成员函数的情况 继承与友元及静态成员多继承菱形继承菱形继承的问题菱形虚拟继承 继承和组合 面向对象三大特性:封装继承和多态。封装在类和对象…

2172. 最大公约数

Powered by:NEFU AB-IN Link 文章目录 2172. 最大公约数题意思路代码 2022年第十三届决赛真题 2172. 最大公约数 题意 给定一个数组, 每次操作可以选择数组中任意两个相邻的元素 x , y x, yx,y 并将其 中的一个元素替换为 gcd ⁡ ( x , y ) \operatorname{gcd}(x, y)gcd(x,y),…

从月薪5000到月薪20000,自动化测试应该这样学...

绝大多数测试工程师都是从功能测试做起的,工作忙忙碌碌,每天在各种业务需求学习和点点中度过,过了好多年发现自己还只是一个功能测试工程师。 随着移动互联网的发展,从业人员能力的整体进步,软件测试需要具备的能力要…