浅谈Spring IOC和DI及Spring工厂类

浅谈Spring IOC和DI及Spring的工厂类

文章目录

  • 浅谈Spring IOC和DI及Spring的工厂类
    • 一. IOC
      • 1.什么是IOC
      • 2.为什么使用IOC
        • 传统开发模式的弊端
      • 3. 使用spring-IOC步骤
    • 二. DI
      • 1.什么是DI
      • 2.传统面向接口编程
      • 2.使用DI方式
    • 三. Spring的工厂类

一. IOC

1.什么是IOC

​ IOC: Inversion of Control(控制反转),即把对象的创建权交给Spring管理。

2.为什么使用IOC

传统开发模式的弊端

​ (1)业务和实现类过于紧密,耦合性太高,底层业务要修改大量源代码
在这里插入图片描述
​ (2)通过工厂可以实现接口与实现业务的分离,相对于(1)已经有了很大的改进
在这里插入图片描述
​ (3)在工厂内部使用配置文件加载,相对于(2)又有了改进
在这里插入图片描述
我们的目标是:开发者不必再为单实例模式类、属性文件解析等这些很底层的需求编写代码,可以更专注于上层的应用。

解决方法:可以通过Spring提供的IoC容器,我们可以将对象之间的依赖关系交由Spring进行控制,避免硬编码所造成的过度程序耦合。

3. 使用spring-IOC步骤

(1)添加jar包:
点击地址跳转:spring相关jar包下载地址
(2)创建配置文件,文件名称applicationContext.xml放在当前工程resource文件夹里

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsd"></beans>

(3)在applicationContext.xml中添加要管理的类

<!--id:为自己起的名称 class:为实现接口类的全路径--!>
<bean id="userDao" class="com.Springioc.Dao.Impl"/>

(4)测试使用

public void save(){//加载配置文件ApplicationContext applicationContext=new ClassPathXmlApplicationContext(configLocation:"applicationContext.xml");//参数为配置文件当中<bean>的id UserDao userDao=(UserDao)applicationContext.getBean(s:"userDao");userDao.save()}

二. DI

1.什么是DI

DI即依赖注入,是给spring管理类当中依赖的属性,通过配置文件进行赋值的过程。前提必须有IOC的环境,Spring管理这个类的时候才能将类的依赖的属性值注入(设置)进来。

2.传统面向接口编程

UserDao dao=new UserDaoMysqlImp1():
dao.name="myxq";

使用面向接口编程没有办法设置属性值

2.使用DI方式

(1)实现类当中的属性要提供set方法

public class UserDaoMysqlImpl implements UserDao {public String name;//依赖注入要提供set方法public void setName(String name){this.name=name;}@Override public void save(){System.out.println("mysql--save");System.out.println("name="+name):
}
}

(2)在配置文件当中配置依赖注入

<?xml version="1.0"encoding="UTF-8">
Kbeans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans 
http://www.springframework.org/schema/beans/spring-beans.xsd"><!--id:为自己起的名称class:为接口实现类的全路径一>
<bean id="userDao" class="com.Springioc.dao.UserDaoMysqlImpl">
<property name="name" value="myxq"/>
</bean〉
</beans〉

(3)测试

public void save(){//加载配置文件ApplicationContext applicationContext=new ClassPathXmlApplicationContext(configLocation:"applicationContext.xml");//参数为配置文件当中<bean>的id UserDao userDao=(UserDao)applicationContext.getBean(s:"userDao");userDao.save()
}

三. Spring的工厂类

  1. BeanFactory:当调用getBean的时候才会创建实例对象
  2. ApplicationContext:当加载配置文件时候就会创建实例对象
  3. ApplicationContext实现类
    ClassPathXmlApplicationContext:加载类路径下的配置文件(常用
    FileSystemXmlApplicationContext:加载文件系统下的配置文件

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

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

相关文章

城市大脑标准体系与评价指标总体框架研究

来源&#xff1a;城市大脑全球标准研究组根据城市大脑标准的前期研究和中国指挥与控制学会&#xff08;CICC&#xff09;《城市大脑建设规范》标准启动会的专家意见&#xff0c;形成城市大脑标准体系与评价指标总体框架(如图1所示&#xff09;&#xff0c;供各位专家探讨&#…

AOP和Spring AOP介绍

AOP和Spring AOP介绍 文章目录AOP和Spring AOP介绍一.AOP简介二. 传统开发存在的弊端三. AOP实现原理四.Spring AOP五.AOP相关术语一.AOP简介 AOP为Aspect Oriented Programming的缩写&#xff0c;意为&#xff1a;面向切面编程。是OOP的延续&#xff0c;是软件开发中的一个热…

新鲜出炉!大规模神经网络最新综述!

来源&#xff1a;arXiv编译&#xff1a;机器之心在本综述论文中&#xff0c;研究者解释了不同技术的工作原理、评估和比较&#xff0c;还分析了一些实现这些技术的框架。现代深度学习和人工智能技术的发展涉及使用深度神经网络&#xff08;DNN&#xff09;来解决图像、视频、音…

数据结构与算法理论概述

数据结构与算法理论概述 文章目录数据结构与算法理论概述数据结构概述◆ 数据结构涵盖的内容◆ 存储数据算法概述◆ 算法的基本特性◆ 算法设计要求◆ 算法分析数据结构概述 狭义上&#xff1a;数据结构是专门研究数据存储的问题&#xff1b; 数据的存储包括&#xff1a;个体的…

战略性基础研究的由来及国际实践研究

来源&#xff1a;微信公众号中国科学院院刊&#xff0c;原载&#xff1a;《中国科学院院刊》2022年第3期作者&#xff1a;阿儒涵1,2、杨可佳3、吴丛1,2、李晓轩1,2*1 中国科学院科技战略咨询研究院2 中国科学院大学公共政策与管理学院3 挪威奥斯陆大学技术创新和文化研究中心近…

顺序表Sqlist.cpp

顺序表Sqlist.cpp 文章目录顺序表Sqlist.cpp1 顺序表插入逻辑2 顺序表删除逻辑3 代码演示4 运行结果1 顺序表插入逻辑 在表的第 i 个位置前插入一个元素 实现步骤&#xff1a; 将第 n 至第 i 位的元素向后移动一个位置&#xff1b;将要插入的元素写到第 i 个位置&#xff1b;表…

顺序表的插入删除查找遍历

顺序表的插入删除查找遍历 文章目录顺序表的插入删除查找遍历代码运行结果截图代码 #define Maxsize 100typedef int ElemType; typedef struct{ElemType data[Maxsize];int length; }Sqlist;void Createlink(Sqlist &L) {int a;printf("请输入你要创建的顺序表的长…

Yann LeCun最新访谈:能量模型是通向自主人工智能系统的起点

来源&#xff1a;ZDNet编译&#xff1a;钱磊编辑&#xff1a;陈彩娴继自监督学习之后&#xff0c;Yann LeCun 在接受 ZDNet 的最新访谈中又着重探讨了他在几年前曾大篇幅推崇的概念&#xff1a;「能量模型」&#xff08;energy-based models&#xff09;。什么是能量模型&#…

HTML5崛起之时,Java桌面时代就已经终结了

来源&#xff1a;AI前线作者&#xff1a;Steve Hannah翻译&#xff1a;核子可乐编辑&#xff1a;燕珊2004 年 Google Maps 的面世标志着 Java 桌面时代的终结&#xff0c;也改变了桌面环境下“跨平台”的基本定义。本文作者以个人视角对 Java 桌面发展历程做了回顾&#xff0c;…

单链表介绍及其实现

链表 文章目录链表链表的专业术语&#xff1a;实现链表的专业术语&#xff1a; 首节点&#xff1a;存放第一个有效数据的结点&#xff1b;尾结点&#xff1a;存放最后一个有效数据的结点&#xff1b;尾指针指向&#xff1b;头结点&#xff1a;头结点的数据类型和首结点的类型一…

Linux基础概念及常用命令

Linux基础概念及常用命令 文章目录Linux基础概念及常用命令1 Linux概述1.1 为什么要学Linux1.2 Linux简介1.3 Linux 发行版1.4 Linux 应用领域2 Linux常用命令2.1 Linux目录结构2.2 Linux目录命令2.3 Linux文件命令2.4 Linux其他命令1 Linux概述 1.1 为什么要学Linux linux诞生…

PNAS新研究:剑桥学者发现,有些 AI 模型无法被计算

来源&#xff1a;AI科技评论作者&#xff1a;Ailleurs编辑&#xff1a;陈彩娴近日&#xff0c;剑桥学者在《美国科学院院报》&#xff08;PNAS&#xff09;上发表了一篇名为“The Difficulty of Computing Stable and Accurate Neural Networks: On the Barriers of Deep Learn…

量子计算机首次成功模拟化学反应

SHUTTERSTOCK来源&#xff1a;IEEE电气电子工程师━━━━利用谷歌的Sycamore量子处理器&#xff0c;科学家们进行了迄今为止涉及量子计算机的最大规模的化学模拟。他们采用了一种新技术&#xff0c;可能有助于抵抗量子电路中常见的噪声。量子计算机理论上可以实现量子优势&…

单链表的按位置插入和删除

单链表的插入和删除 文章目录单链表的插入和删除1 单链表插入2 单链表删除3 代码实现1 单链表插入 要想将结点s插入到ai与ai1之间&#xff0c;不需要移动数据元素&#xff0c;只需要在ai与ai1之间插入一个新的结点&#xff0c;也就是我们要插入的结点s。关键就是要修改结点p的…

DeepMind最新研究:如何将「大语言模型」 训练到最优?

来源&#xff1a;AI科技评论 作者&#xff1a;维克多Transformer的提出距离我们已经有5年的时间&#xff0c;随着模型规模的不断增长&#xff0c;性能提升也逐渐出现边际效益递减的情况。如何训练出最优性能的大模型&#xff1f;最近&#xff0c;DeepMind做了一项调查&#xf…

给计算机处理器做手术来研究大脑

来源&#xff1a;混沌巡洋舰在人类对大脑认识的历史上&#xff0c;曾经使用过很多隐喻来描述脑&#xff0c;比如齿轮机械、电话交换机、计算机等等。目前&#xff0c;“脑就像一台计算机”这个隐喻仍然占据着主导地位&#xff0c;尽管人们对于这个隐喻的贴切程度的看法存在分歧…

为什么百度查到的ip地址和ipconfig查到的不同;详解公网Ip和私网ip; 网络分类ABC类;

文章目录1.百度查到的ip和ipconfig查到的不同1.1引出问题1.2不一样的原因2.IP地址分类2.1IP类别2.1 Public IP和Private IP3.总结3.1整理上网流程3.2遗留问题1.百度查到的ip和ipconfig查到的不同 IP可以分为Public IP 和 Private IP,出现这种规划的原因在于IPv4所能表示的IP太少…

国科金:共融机器人基础理论与关键技术研究重大研究计划

来源&#xff1a;学术头条国家自然科学基金委员会现发布共融机器人基础理论与关键技术研究重大研究计划 2022 年度项目指南&#xff0c;请申请人及依托单位按项目指南中所述的要求和注意事项申请。 国家自然科学基金委员会 2022 年 4 月 2 日一、科学目标本重大研究计划瞄准国…

停止追赶最新的 RPA 趋势

来源&#xff1a;AI前线作者&#xff1a;Anupam Krishnamurthy译者&#xff1a;Phoenix策划&#xff1a;蔡芳芳本文最初发布于 anupam.de 博客&#xff0c;由 InfoQ 中文站翻译并分享。我做了 4 年的 RPA 开发者——2017 至 2021 年。在 2019 年底&#xff0c;我做了一个重要的…

请求转发与重定向的区别和执行流程

请求转发与重定向的区别和执行流程 文章目录请求转发与重定向的区别和执行流程1 请求转发与重定向区别2 现实生活的例子2.1 重定向2.2 请求转发3 重定向-流程图、代码、结果3.1 流程图3.2 代码BoyServlet3.3 代码GirlServlet3.4 web.xml文件3.5 结果4 请求转发-流程图、代码、结…