spring学习笔记03-spring-DI-依赖注入详解(通过xml配置文件来配置依赖注入)

spring学习笔记03-spring-DI-依赖注入详解

1.概念
2.构造函数注入
3.set方法注入
4.集合的注入

需要被注入的实体对象

package com.itheima.service.impl;import com.itheima.service.IAccountService;import java.util.Arrays;
import java.util.List;
import java.util.Properties;
import java.util.Set;
import java.util.Map;/*** 账户的业务层实现类*/
public class AccountServiceImpl3 implements IAccountService {private String[] myStrs;private List<String> myList;private Set<String> mySet;private Map<String,String> myMap;private Properties myProps;public void setMyStrs(String[] myStrs) {this.myStrs = myStrs;}public void setMyList(List<String> myList) {this.myList = myList;}public void setMySet(Set<String> mySet) {this.mySet = mySet;}public void setMyMap(Map<String, String> myMap) {this.myMap = myMap;}public void setMyProps(Properties myProps) {this.myProps = myProps;}public void  saveAccount(){System.out.println(Arrays.toString(myStrs));System.out.println(myList);System.out.println(mySet);System.out.println(myMap);System.out.println(myProps);}}

spring-DI-依赖注入对应的xml配置文件


<?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"><!-- spring中的依赖注入依赖注入:Dependency InjectionIOC的作用:降低程序间的耦合(依赖关系)依赖关系的管理:以后都交给spring来维护在当前类需要用到其他类的对象,由spring为我们提供,我们只需要在配置文件中说明依赖关系的维护:就称之为依赖注入。依赖注入:能注入的数据:有三类基本类型和String其他bean类型(在配置文件中或者注解配置过的bean)复杂类型/集合类型注入的方式:有三种第一种:使用构造函数提供第二种:使用set方法提供第三种:使用注解提供(明天的内容)--><!--构造函数注入:使用的标签:constructor-arg标签出现的位置:bean标签的内部标签中的属性type:用于指定要注入的数据的数据类型,该数据类型也是构造函数中某个或某些参数的类型index:用于指定要注入的数据给构造函数中指定索引位置的参数赋值。索引的位置是从0开始name:用于指定给构造函数中指定名称的参数赋值                                        常用的=============以上三个用于指定给构造函数中哪个参数赋值===============================value:用于提供基本类型和String类型的数据ref:用于指定其他的bean类型数据。它指的就是在spring的Ioc核心容器中出现过的bean对象优势:在获取bean对象时,注入数据是必须的操作,否则对象无法创建成功。弊端:改变了bean对象的实例化方式,使我们在创建对象时,如果用不到这些数据,也必须提供。--><bean id="accountService" class="com.itheima.service.impl.AccountServiceImpl"><constructor-arg name="name" value="泰斯特"></constructor-arg><constructor-arg name="age" value="18"></constructor-arg><constructor-arg name="birthday" ref="now"></constructor-arg></bean><!-- 配置一个日期对象 --><bean id="now" class="java.util.Date"></bean><!-- set方法注入                更常用的方式涉及的标签:property出现的位置:bean标签的内部标签的属性name:用于指定注入时所调用的set方法名称value:用于提供基本类型和String类型的数据ref:用于指定其他的bean类型数据。它指的就是在spring的Ioc核心容器中出现过的bean对象优势:创建对象时没有明确的限制,可以直接使用默认构造函数弊端:如果有某个成员必须有值,则获取对象是有可能set方法没有执行。--><bean id="accountService2" class="com.itheima.service.impl.AccountServiceImpl2"><property name="name" value="TEST" ></property><property name="age" value="21"></property><property name="birthday" ref="now"></property></bean><!-- 复杂类型的注入/集合类型的注入用于给List结构集合注入的标签:list array set用于个Map结构集合注入的标签:map  props结构相同,标签可以互换--><bean id="accountService3" class="com.itheima.service.impl.AccountServiceImpl3"><property name="myStrs"><set><value>AAA</value><value>BBB</value><value>CCC</value></set></property><property name="myList"><array><value>AAA</value><value>BBB</value><value>CCC</value></array></property><property name="mySet"><list><value>AAA</value><value>BBB</value><value>CCC</value></list></property><property name="myMap"><props><prop key="testC">ccc</prop><prop key="testD">ddd</prop></props></property><property name="myProps"><map><entry key="testA" value="aaa"></entry><entry key="testB"><value>BBB</value></entry></map></property></bean>
</beans>

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

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

相关文章

溯因推理:人工智能的盲点

来源&#xff1a;AI前线作者&#xff1a;Ben Dickson译者&#xff1a;Sambodhi策划&#xff1a;凌敏本文给当今人工智能界推崇深度学习的现象泼了冷水&#xff0c;指出了人工智能的盲点&#xff1a;溯因推理&#xff0c;并提醒人们不要忽视深度学习的种种问题&#xff0c;否则将…

Python Django项目部署 Linux 服务器

项目依赖: Linux Centos7 (阿里云轻量级服务器) Python 3.7.2 Django 2.2.1 restframework 3.9.4 mysql 5.7 1 安装 python3 到 Centos7&#xff0c; 先安装软件管理包和可能使用的依赖 yum -y groupinstall "Development tools" yum install openssl-devel bzip…

C++学习——C++中的四种类型转换

文章目录1.dynamic_cast2.const_cast3.3 static_cast3.4 reinterpret_cast1.dynamic_cast 用于动态类型转换。只能用于含有虚函数的类&#xff0c;用于类层次间的向上和向下转化。只能转指针或引用。向下转化时&#xff0c;如果是非法的对于指针返回NULL&#xff0c;对于引用抛…

终于,LoRaWAN成全球物联网标准!LoRa将拿下LPWAN领域50%市场?

来源&#xff1a;LoRa联盟官网等整理发布&#xff1a;物联网智库 不久之前&#xff0c;支持物联网低功耗广域网&#xff08;LPWAN&#xff09;LoRaWAN开放标准的LoRa联盟宣布&#xff0c;致力于“物联网和智慧城市及社区标准化”的国际电联电信标准化部门&#xff08;ITU-T&…

spring学习笔记02-spring-bean创建的细节问题

spring学习笔记02-spring-bean创建的细节问题 三种创建Bean对象的方式Bean的作用范围Bean的生命周期 <?xml version"1.0" encoding"UTF-8"?> <beans xmlns"http://www.springframework.org/schema/beans"xmlns:xsi"http://www…

算法(二叉树-矩阵-堆排序)

最小和 位运算知识点 12>>1 //6 a/2 等价为 a>>1 中间数 (LR)/2 会出现溢出(溢出的意思就是超过了二进制) L(R-L)/2 最终改成 l((r-l)>>1) const smallSum arr > {if (arr null || arr.length < 2) {return 0;}return mergeSort(arr, 0, arr.length …

Nature:盐粒大小的相机,可以拍出清晰彩色照片,未来或可应用到手机

来源&#xff1a;大数据文摘你能想象上图只有盐粒大小的物体是一款相机吗&#xff1f;事实上&#xff0c;这款微型相机甚至可以拍出清晰的全彩图像&#xff0c;而相比之下&#xff0c;普通相机的尺寸要大50万倍。我们可以来看看它的成片。这款微型相机是普林斯顿大学和华盛顿大…

C++学习——C++中的四个智能指针

C里面的四个智能指针:auto_ptr, shared_ptr, weak_ptr, unique_ptr 其中后三个是c11支持&#xff0c;并且第一个已经被11弃用。为什么要使用智能指针&#xff1a;智能指针的作用是管理一个指针&#xff0c;因为存在以下这种情况&#xff1a; 申请的空间在函数结束时忘记释放&am…

spring学习笔记01-BeanFactory和ApplicationContext的区别

spring学习笔记01-BeanFactory和ApplicationContext的区别 BeanFactory 和 ApplicationContext 的区别 BeanFactory 才是 Spring 容器中的顶层接口。 ApplicationContext 是它的子接口。           BeanFactory 和 ApplicationContext 的区别&#xff1a; 创建对象的…

java微博爬虫

微博爬取要做到每日百万级的数据量&#xff0c;需要解决很多问题。 1.springboot自带Scheduled注解是一个轻量级的quartz&#xff0c;可以完成定时任务。只需要在运行方法上加一个Scheduled注解即可。 该注解有许多属性值 initiaDelay 从程序开始延长一定时间后首次执行。 fixe…

C++学习——set与map

1.set的使用 set的各成员函数列表如下:1. begin()--返回指向第一个元素的迭代器2. clear()--清除所有元素3. count()--返回某个值元素的个数4. empty()--如果集合为空&#xff0c;返回true5. end()--返回指向最后一个元素的迭代器6. equal_range()--返回集合中与给定值相等的上…

2100年彻底颠覆世界的“十大未来科技”

来源&#xff1a;于硅谷智库 科学家们对2100年前的人类生活进行了十大预测&#xff0c;如果这些预测能够变成现实的话&#xff0c;将会让世界发生翻天覆地的变化。1能上网的隐形眼镜出现时间&#xff1a;2030年前预测者&#xff1a;来自华盛顿大学西雅图分校的巴巴克A帕尔维兹教…

spring学习笔记04-IOC常用注解(一)

文章目录2.3常用注解2.3.1 用于创建对象的2.3.1.1 Component2.3.1.2 Controller Service Repository2.3.2 用于注入数据的2.3.2.1 Autowired2.3.2.2 Qualifier2.3.2.3 Resource2.3.2.4 Value2.3.3 用于改变作用范围的&#xff1a;2.3.3.1 Scope2.3.4 和生命周期相关的&#xff…

TCP三次握手和四次挥手通俗理解

一、TCP报文格式 在了解三次握手和四次挥手之前&#xff0c;先知道TCP报文内部包含了哪些东西。 1 TCP报头中的源端口号和目的端口号同IP数据报中的源IP与目的IP唯一确定一条TCP连接。TCP在发送数据前必须在彼此间建立连接&#xff0c;这里连接意思是&#xff1a;双方需要内保…

智能如何产生,这仍然是个问题

来源&#xff1a;孙学军科学网博客链接地址&#xff1a;https://blog.sciencenet.cn/blog-41174-1316772.html本文的智能只是生物系统工作原理层面&#xff0c;而不是意识层面的&#xff0c;无论是工作原理&#xff0c;还是大脑意识层面&#xff0c;今天的科学仍然没有给出理想…

spring学习笔记05-IOC常用注解(二)

文章目录2.3 关于 Spring 注解和 XML 的选择问题2.4spring 管理对象细节2.5spring 的纯注解配置2.5.1 待改造的问题2.5.2 新注解说明2.5.2.1 Configuration2.5.2.2 ComponentScan2.5.2.3 Bean2.5.2.4 PropertySource2.5.2.5 Import2.5.2.6 通过注解获取容器&#xff1a;2.3 关于…

数据结构与算法——排序

文章目录1.冒泡排序2.选择排序3.插入排序4.快速排序5.堆排序6.归并排序7.希尔排序1.冒泡排序 将一个数组从小到大排序&#xff0c;一次循环&#xff08;从头开始遍历&#xff0c;将相邻的两个数值比较&#xff0c;如果前面一个大于后面的数字&#xff0c;交换这两个数字&#x…

Luogu P4168 [Violet]蒲公英 分块

这道题算是好好写了。写了三种方法。 有一个好像是$qwq$$N\sqrt(N)$的方法&#xff0c;&#xff0c;但是恳请大佬们帮我看看为什么这么慢$qwq$&#xff08;后面的第三种&#xff09; 注:$pos[i]$表示$i$属于第$pos[i]$块。 第一种是统计所有可能的块组成的区间中&#xff08;第…

一文掌握明年物联网传感器市场!2022中国AIoT产业全景图谱报告新鲜出炉

来源&#xff1a;传感器专家网物联网产业是传感器应用最广泛的领域之一&#xff0c;研发新型传感器&#xff0c;做传感器市场&#xff0c;都不能不考虑物联网产业的需求。2021年随着COVID-19 病毒的存在已常态化&#xff0c;防疫抗疫进入了拉锯阶段&#xff1b;波及全球的“芯片…

spring学习笔记06-spring整合junit(出现的问题,解决的思路)

spring学习笔记06-spring整合junit&#xff08;出现的问题&#xff0c;解决的思路&#xff09; 文章目录spring学习笔记06-spring整合junit&#xff08;出现的问题&#xff0c;解决的思路&#xff09;3.1测试类中的问题和解决思路3.1.1 问题3.2.1 第一步&#xff1a;pom.xml文件…