当前位置: 首页 > news >正文

Spring-IOC-xml方式

简介

**控制反转**(Inversion of Control,缩写为**IoC**),是[面向对象编程]中的一种设计原则,可以用来减低计算机[代码]之间的[耦合度]。其中最常见的方式叫做[依赖注入]Dependency Injection,简称DI),还有一种方式叫“依赖查找”(Dependency Lookup)。通过控制反转,对象在被创建的时候,由一个调控系统内所有对象的外界实体将其所依赖的对象的引用传递给它。也可以说,依赖被注入到对象中。

控制反转IOC: 把对象创建和对象之间的调用过程,交给spring进行管理

使用IOC目的: 为了降低耦合度

上面的入门案例 就是IOC实现

底层原理

使用xml 解析,工厂模式,反射

 IOC接口 (BeanFactory)

IOC思想基于IOC容器完成,IOC容器底层就是工厂对象

Spring提供IOC容器实现两种方式 (2个接口)

(1)BeanFactory: IOC 容器基本实现,是spring内部的使用接口,不提供开发人员进行使用

加载配置文件时,不会创建对象,在获取(使用)对象时,才去创建对象

(2)ApplicationContext:ApplicationContext是BeanFactory接口的子接口,提供更多更强大的功能,一般由开发人员进行使用,

加载配置文件时候就会把 配置文件中配置的对象进行创建

IOC操作Bean管理


1. 什么是bean管理
  bean管理指的是两个操作:
  a. spring 创建对象
  b. spring 注入属性
2. Bean管理操作有2种方式
   a 基于xml方式
   b.基于注解方式
 

  

 基于xml方式创建对象 

(1)在spring配置文件种,使用bean标签,标签里面添加对应的属性,就可以实现对象创建

(2)bean标签常用属性

id属性: 唯一标识

class属性:类全路径 (包类路径)

(3)创建对象时候,默认执行无参构造方法,完成对象的创建


<!--配置User对象创建-->
<bean id="user" class="com.ly.User">
 

基于xml方式注入属性

(1)DI: 依赖注入, 就是注入属性

第一种子 注入方式: 使用set方法进行注入

(a) 创建类,定义属性和setter

 package com.ly;​public class Book {​//创建属性private String bName;private String author;​public void setbName(String bName) {this.bName = bName;}public void setAuthor(String author) {this.author = author;}public void print(){System.out.println(bName+","+author);}}
 ​

(b) 在spring配置文件中 ,配置对象及属性

<!--使用set 方法注入属性--><bean id="book" class="com.ly.Book"><!--使用property完成属性注入name:类里面属性名称value:向属性注入的值--><property name="author" value="王丽丽"></property><property name="bName" value="李四"></property></bean>

(c)测试

  
@Testpublic void tesBook(){//1. 加载spring配置文件ApplicationContext context = new ClassPathXmlApplicationContext("demo1.xml");//2.获取 配置创建的对象Book book = context.getBean("book", Book.class);book.print();}​
 控制台输出:李四,王丽丽

有参构造方法进行注入 

(a) 创建类,定义属性,生成带参构造方法

 
package com.ly;// 使用 有参构造注入public class Order {private String oName;private String address;​public Order(String oName, String address) {this.oName = oName;this.address = address;}//为了测试 结果 添加的public void print(){System.out.println(oName+"::"+address);}}

(b)在spring配置文件中 进行配置

 <!--使用 带参构造方式注入--><bean id="order" class="com.ly.Order"><constructor-arg name="address" value="天津市"></constructor-arg><constructor-arg name="oName" value="玩具车"></constructor-arg></bean>

(c) 测试

 
 @Testpublic void tesOrder(){//1. 加载spring配置文件ApplicationContext context = new ClassPathXmlApplicationContext("demo1.xml");//2.获取 配置创建的对象Order order = context.getBean("order", Order.class);order.print();}
 ​​控制台输出 :玩具车::天津市

p命名空间注入 

(1)使用p命名空间注入, 可以简化基于xml配置方式

a. 添加p命名空间 xmlns:p="http://www.springframework.org/schema/p"

 <beans xmlns="http://www.springframework.org/schema/beans"xmlns:p="http://www.springframework.org/schema/p"     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">
 ​

b.进行属性注入,在bean标签里面进行操作

 <bean id="book" class="com.ly.Book" p:author="李四" p:bName="html"></bean>

基于xml注入其他类型属性

1.字面量(固定值)

a. null值 ---<null/> 标签

<bean id="book" class="com.ly.Book">​<property name="author" value="王丽丽"></property><property name="bName" value="李四"></property><!--address 值为 null 空值--><property name="address"><null/></property></bean>
b.属性值包含特殊符号
 使用转义 
<property name="address" value="&lt;南京&gt;"></property>
 或者cdata
 <property name="address"><value><![CDATA[<南京>]]></value></property>​
 控制台输出李四,王丽丽,<南京>

相关文章:

Spring-IOC-xml方式

简介 **控制反转**&#xff08;Inversion of Control&#xff0c;缩写为**IoC**&#xff09;&#xff0c;是[面向对象编程]中的一种设计原则&#xff0c;可以用来减低计算机[代码]之间的[耦合度]。其中最常见的方式叫做[依赖注入]Dependency Injection&#xff0c;简称DI&#…...

HUAWEI华为荣耀MagicBook X 15酷睿i5-10210U处理器集显(BBR-WAH9)笔记本电脑原装出厂Windows10系统

链接&#xff1a;https://pan.baidu.com/s/1YVcnOP5YKfFOoLt0z706rg?pwdfwp0 提取码&#xff1a;fwp0 MagicBook荣耀原厂Win10系统自带所有驱动、出厂主题壁纸、系统属性专属LOGO标志、Office办公软件、华为/荣耀电脑管家等预装程序 文件格式&#xff1a;esd/wim/swm 安装…...

React使用动态标签名称

最近在一项目里&#xff08;React antd&#xff09;遇到一个需求&#xff0c;某项基础信息里有个图标配置&#xff08;图标用的是antd的Icon组件&#xff09;&#xff0c;该项基础信息的图标信息修改后&#xff0c;存于后台数据库&#xff0c;后台数据库里存的是antd Icon组件…...

Java异常篇----第二篇

系列文章目录 文章目录 系列文章目录前言一、 Excption与Error包结构二、Thow与thorws区别三、Error与Exception区别?四、error和exception有什么区别前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女…...

微服务(1)

目录 1.什么是微服务&#xff1f;谈谈你对微服务的理解&#xff1f; 2.什么是Spring Cloud&#xff1f; 3.Springcloud中的组件有哪些&#xff1f; 3.具体说说SpringCloud主要项目&#xff1f; 5.SpringCloud项目部署架构&#xff1f; 1.什么是微服务&#xff1f;谈谈你对微…...

195.【2023年华为OD机试真题(C卷)】5G 网络建设(最小生成树—JavaPythonC++JS实现)

请到本专栏顶置查阅最新的华为OD机试宝典 点击跳转到本专栏-算法之翼:华为OD机试 🚀你的旅程将在这里启航!本专栏所有题目均包含优质解题思路,高质量解题代码,详细代码讲解,助你深入学习,深度掌握! 文章目录 【2023年华为OD机试真题(C卷)】5G 网络建设(最小生…...

2024年1月1日答案

a)i. V B B V C C 16 V V_{BB} V_{CC} 16V VBB​VCC​16V R t h R B R E R B R E 10 k Ω 3 k Ω 10 k Ω 3 k Ω ≈ 2.31 k Ω R_{th} \frac{R_B \times R_E}{R_B R_E} \frac{10k\Omega \times 3k\Omega}{10k\Omega 3k\Omega} \approx 2.31k\Omega Rth​RB​R…...

【算法】dp题单

题单链接&#xff1a; https://vjudge.net/contest/574209#overview 目录 1. 洛谷 P1020 导弹拦截 &#xff08;dp二分Dilworth 定理&#xff09; 2. P1439 最长公共子序列&#xff08;二分求最长公共子序列&#xff09; 3. 洛谷 P1854 花店橱窗布置 &#xff08;线性dp 用…...

Verilog视频信号图形显示 FPGA(iCE40)

您需要一块带视频输出的 FPGA 板。 我们将在 640x480 下工作&#xff0c;几乎任何视频输出都可以在此像素工作。 它有助于轻松地对 FPGA 板进行编程并相当熟悉 Verilog。 如果您没有开发板&#xff0c;请不要担心&#xff0c;您可以使用 Verilator 模拟器。 材料 Lattice iCE…...

【LeetCode 面试经典150题】26. Remove Duplicates from Sorted Array 在有序数组中移除重复元素

26. Remove Duplicates from Sorted Array 题目大意 Given an integer array nums sorted in non-decreasing order, remove the duplicates in-place such that each unique element appears only once. The relative order of the elements should be kept the same. Then …...

linux系统下sql脚本的执行与导出

terminal中执行 执行 mysql -u [username] -p -D [databasename] < [XXX.sql] 导出 mysql -u [username] -p [datbasename] > [XXX.sql] 导出的数据库名自定义。 mysql -u [username] -p [databasename] [tablename] > [xxx.sql] 导出表名自定义 mysql shell 执行 …...

MyBatis学习一:快速入门

前言 公司要求没办法&#xff0c;前端也要了解一下后端知识&#xff0c;这里记录一下自己的学习 学习教程&#xff1a;黑马mybatis教程全套视频教程&#xff0c;2天Mybatis框架从入门到精通 文档&#xff1a; https://mybatis.net.cn/index.html MyBatis 快速入门&#xf…...

零售业物流这个防漏水技术,居然没有翻车!

随着科技的不断发展&#xff0c;水浸监控系统在各个领域得到了广泛应用。水浸监控不仅仅是为了保护建筑结构和设备&#xff0c;更是为了防范因水灾引起的生命安全和财产损失。 因此&#xff0c;为了有效预防和应对水浸事件&#xff0c;水浸监控系统应运而生&#xff0c;成为各行…...

主浏览器优化之路1——你现在在用的是什么浏览器?Edge?谷歌?火狐?360!?

上一世&#xff0c;我的浏览器之路 引言为什么要用两个浏览器为什么一定要放弃火狐结尾给大家一个猜数字小游戏&#xff08;测运气&#xff09; 引言 小时候&#xff0c;我一开始上网的浏览器是2345王牌浏览器吧&#xff0c; 因为上面集成了很多网站&#xff0c;我记得上面有7…...

gitlab请求合并分支

直接去看原文: 原文链接:Gitlab合并请求相关流程_source branch target branch-CSDN博客 --------------------------------------------------------------------------------------------------------------------------------- 入口&#xff1a; 仓库控制台的这两个地方都…...

使用Vue3开发学生管理系统模板1

环境搭建 通过解压之前《Vue3开发后台管理系统模板》的代码&#xff0c;我们能够得到用户增删改查的页面&#xff0c;我们基于用户增删改查的页面做进一步的优化。 创建学生增删改查页面 第一步&#xff1a;复制用户增删改查页面&#xff0c;重命名为StudentCRUD.vue <…...

【cmake实战:番外】交叉编译——Linaro

【cmake实战&#xff1a;番外】交叉编译——Linaro 一、交叉编译1、交叉编译简介2、为什么会有交叉编译 二、交叉编译链1、什么是交叉编译链2、交叉编译工具 三、Linaro1、下载2、解压3、demo3.1、toolchain_aarch64.cmake3.2、CMakeLists.txt3.3、main.cpp 4、执行编译5、查看…...

2024年年初Java5年实战面试题(北京)

高阶篇&#xff1a; 一、在面对千万条并发请求的情况下&#xff0c;如果数据库频繁查询导致崩溃&#xff0c;可以采取以下措施来解决问题: 1.缓存数据:可以使用缓存技术来减少对数据库的查询次数。将经常查询的数据存储在缓存中&#xff0c;例如使用Redis等内存数据库&#xff…...

【Apache-2.0】springboot-openai-chatgpt超级AI大脑产品架构图

springboot-openai-chatgpt: 一个基于SpringCloud的Chatgpt机器人&#xff0c;已对接GPT-3.5、GPT-4.0、百度文心一言、stable diffusion AI绘图、Midjourney绘图。用户可以在界面上与聊天机器人进行对话&#xff0c;聊天机器人会根据用户的输入自动生成回复。同时也支持画图&a…...

如何在iPhone设备中查看崩溃日志

​ 目录 如何在iPhone设备中查看崩溃日志 摘要 引言 导致iPhone设备崩溃的主要原因是什么&#xff1f; 使用克魔助手查看iPhone设备中的崩溃日志 奔溃日志分析 总结 摘要 本文介绍了如何在iPhone设备中查看崩溃日志&#xff0c;以便调查崩溃的原因。我们将展示三种不同的…...

Windows平台APK安装技术深度解析:APK-Installer架构设计与实践指南

Windows平台APK安装技术深度解析&#xff1a;APK-Installer架构设计与实践指南 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer APK-Installer是一款专为Windows平台设计…...

Z-Image-Turbo孙珍妮LoRA模型部署教程:支持WebP/AVIF新格式输出

Z-Image-Turbo孙珍妮LoRA模型部署教程&#xff1a;支持WebP/AVIF新格式输出 1. 引言&#xff1a;快速上手明星风格AI绘图 想用AI生成特定明星风格的图片吗&#xff1f;今天给大家介绍一个非常实用的工具——基于Z-Image-Turbo的孙珍妮LoRA模型。这个模型专门针对孙珍妮的风格…...

从C语言转战工业PLC?CodeSys ST语言中的指针和引用,和你想的不太一样

从C语言到工业PLC&#xff1a;CodeSys ST语言中指针与引用的颠覆性设计 1. 当高级语言开发者遭遇工业控制内存模型 第一次在CodeSys ST语言中看到POINTER TO和REFERENCE TO语法时&#xff0c;许多从C/C转战工业自动化的开发者会下意识地松一口气——"终于遇到熟悉的概念了…...

面向高精度应用的数字控制PDH稳频电路设计与实现

1. 数字控制PDH稳频电路的核心价值 在原子钟、引力波探测这类需要亚赫兹级别频率稳定度的尖端实验中&#xff0c;激光稳频技术就像精密机械中的轴承——看似不起眼却决定着整个系统的性能上限。传统模拟PDH&#xff08;Pound-Drever-Hall&#xff09;电路虽然能提供MHz量级的反…...

用Neural Renderer和PyTorch搞定3D车辆模型渲染:从.obj文件到Carla数据集实战

3D车辆模型渲染实战&#xff1a;Neural Renderer与Carla数据集深度整合指南 在自动驾驶和计算机视觉领域&#xff0c;逼真的3D车辆模型渲染技术正成为算法开发和测试的关键环节。传统渲染方法往往难以平衡效率与真实感&#xff0c;而基于神经网络的渲染技术为解决这一难题提供了…...

OneButton库详解:嵌入式单按键多态交互设计与实现

1. OneButton 库深度解析&#xff1a;面向嵌入式系统的单按钮多态交互设计与工程实现1.1 库定位与工程价值OneButton 是一个轻量级、无依赖的 Arduino 兼容库&#xff0c;专为解决嵌入式系统中单物理按键承载多重用户意图这一经典工程难题而设计。在资源受限的 MCU&#xff08;…...

3分钟掌握视频转PPT终极技巧:快速提取幻灯片内容

3分钟掌握视频转PPT终极技巧&#xff1a;快速提取幻灯片内容 【免费下载链接】extract-video-ppt extract the ppt in the video 项目地址: https://gitcode.com/gh_mirrors/ex/extract-video-ppt 还在为会议录屏中的PPT幻灯片提取而烦恼吗&#xff1f;extract-video-pp…...

Qt项目实战:用Quazip源码集成搞定带进度条的文件压缩解压(附完整工程)

Qt项目实战&#xff1a;零依赖集成Quazip实现带进度监控的压缩解压工具 在桌面应用开发中&#xff0c;文件压缩解压功能就像瑞士军刀里的剪刀——看似不起眼&#xff0c;但关键时刻缺它不可。无论是开发安装包制作工具、数据备份软件还是资源管理器&#xff0c;处理ZIP文件都是…...

MATLAB实时绘图卡顿?优化串口通信与图形刷新的几个实用技巧

MATLAB实时绘图性能优化&#xff1a;突破串口通信与图形刷新的瓶颈 当你在实验室里盯着屏幕上跳动的数据曲线&#xff0c;却发现它像老式幻灯片一样一卡一顿时&#xff0c;那种挫败感简直让人抓狂。特别是在处理高速ADC采样或长时间运行的实验时&#xff0c;MATLAB默认的绘图方…...

从 Hugging Face 到本地:ProcessorMixin 模型保存与加载的完整指南

从 Hugging Face 到本地&#xff1a;ProcessorMixin 模型保存与加载的完整指南 在机器学习工程实践中&#xff0c;模型部署的最后一公里往往决定着整个项目的成败。当您花费数周时间在 Hugging Face 上精心训练出一个表现优异的模型后&#xff0c;如何将其安全、高效地迁移到生…...