清晰易懂IoC

news/2024/11/20 10:29:47/

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 {@Autowiredprivate UserService userService;
}


http://www.ppmy.cn/news/79392.html

相关文章

Qt 数据库使用小结---以QSQLITE为例

背景: 1、前面一直在使用的是MYSQL数据库。忽然有一次,去客户工控机上装MYSql发现安装一直报错, 最后,不得已,改用SQLITE2、我使用的是QT自带的QSQLITE,因为,安装QT时自带的就是这个数据库。 …

logstash同步数据从kafka到es集群

背景:需求是这样的,原始文件是txt文件(每天300个文件),最终想要的结果是每天将txt中的数据加载到es中,开始的想法是通过logstash加载数据到es中,但是对logstash不太熟悉,不知道怎么讲…

【Linux系列P4】Linux需要什么?编辑器?软件包?一文帮你了解掌握 [yum][vim]———基础开发工具篇

前言 大家好,这里是YY的Linux系列part4;本章主要内容面向接触过Linux的老铁,主要内容含【学习yum工具,进行软件安装】【拓展yum源安装】【掌握vim编辑器使用,基本命令】【命令集】【懒人配置文件安装教程】 在下一章节…

openGauss5.0.0单节点安装

创建用户组dbgroup groupadd dbgroup创建用户组dbgroup下的普通用户omm,并设置普通用户omm的密码,密码建议设置为omm123 useradd -g dbgroup omm passwd omm创建安装目录 mkdir -p /usr/local/openGauss修改安装目录的权限 cd /usr/local chown omm:…

【数据结构与算法】- 期末考试

课程链接: 清华大学驭风计划 代码仓库:Victor94-king/MachineLearning: MachineLearning basic introduction (github.com) 驭风计划是由清华大学老师教授的,其分为四门课,包括: 机器学习(张敏教授) , 深度学习(胡晓林教授), 计算…

了解和使用Docker

前提 本文对 Docker 进行全面阐述,详细介绍 Docker 的作用、其基本使用,如常用命令、Dockerfile 的作用及使用、Docker Compose 的作用及使用。常用的基本上都会涉及,其他可以在 Docker 官网进行查漏补缺。 下面还有投票,一起参…

MyBatis-Plus精讲和使用注意事项

🍓 简介:java系列技术分享(👉持续更新中…🔥) 🍓 初衷:一起学习、一起进步、坚持不懈 🍓 如果文章内容有误与您的想法不一致,欢迎大家在评论区指正🙏 🍓 希望这篇文章对你有所帮助,欢…

让input框只输入英文

解决扫码枪在中文输入法时扫码冲突 扫码枪在扫完码时会自动回车,这时如果是中文输入法就会触发输入法联想,再加一个回车,那么input框输入的就成中文了。如果可以控制input框只能输入英文那就好了。css有一个属性(ime-mode&#xf…