二、IOC容器(1)

news2024/10/2 14:34:57

一、IOC操作Bean管理

1.什么是Bean管理?

  1. Spring创建对象
  2. Spring注入属性
  3. Bean管理是2个操作

2.Bean管理操作有两种方式

  1. 基于xml配置文件方式实现
  2. 基于注解方式实现

二、IOC操作Bean管理(基于xml方式)

1.基于xml方式创建对象

  1. 使用bean标签,标签添加相应的属性,实现对象的创建
  2. 在bean标签常用的属性

        *id属性:唯一标识----context.getBean("id", 对象.class);

        *class属性:类的全路径

        *name属性:跟id作用类似,只是name可以加一些特殊符号(不常用)

     3.创建对象的时候执行的无参数构造方法

2.基于xml方式注入属性

  1. DI:依赖注入,就是注入属性。DI是IOC的具体实现,属性的注入首先创建对象。

3.第一种方式是 生成set方法

  1. 创建类,定义属性和对应的set方法

        2.在Spring配置文件里面配置对象,配置属性的注入

使用<property>完成属性的注入,name是方法名,value是向属性注入的值

        3.创建对象

 4.第二种方式 有参数构造器注入

  1. 创建类,定义属性和有参构造器

 

     2.配置文件

 使用<constructor-arg>标签,name是属性名,value是注入的属性值

<constructor-arg index="0" value="实数"></constructor-arg>

index="0"代表有参构造器的第一个参数

5.p名称空间注入(了解)

  1. 使用p名称空间注入,可以简化xml配置方式

<bean id="book" class="com.zhilei.spring5.Book" p:bname="书名" p:bauthor="小王">
</bean>

三、IOC操作Bean管理(xml注入其他类型属性)

1.字面量-固定值

        null值

         属性值包含特殊符号<>

<property name="address">
    <value><![CDATA[<哈哈>]]></value>
</property>

2.注入属性-外部bean

        1.创建两个类service类和dao类

        2.在配置文件xml里面service调用dao里面的方法

  <bean id="userService" class="com.zhilei.spring5.service.UserService">
    <!--注入userDao对象
        name是属性值的名称
        ref属性是:创建userDao对象bean标签id值
     -->
    <property name="userDao" ref="userDao"></property>
</bean>
<bean id="userDao" class="com.zhilei.spring5.dao.UserDaoImpl">
</bean>

 测试一下 

 3.注入属性-内部bean

一对多的关系:部门和员工

一个部门有多个员工,一个员工只属于一个部门。部门是一,员工是多。

  1. 在实体类之间表示一对多的关系

        部门类

         员工类

         2.在Spring配置文件进行相关配置

 4.注入属性-级联赋值

(1)第1种写法

 (2)第2种写法

 要在Emp里面写getDept方法

 四、IOC操作Bean管理(xml注入集合属性)

 1.注入数组类型的属性

//1.数组类型的属性
private String[] courses;

 2.注入List集合类型属性

//2.list集合属性
private List<String> list;
<property name="list">
    <list>
        <value>王</value>
        <value>李</value>
        <value>张</value>
    </list>
</property>

3. 注入Map集合

//3.Map集合属性
private Map<String,String> maps;
//4.set集合属性
private Set<String> sets;

注入Set集合

private Set<String> sets;
<property name="sets">
    <set>
        <value>王</value>
        <value>李</value>
        <value>张</value>
    </set>
</property>

4.生成set方法

 5. 测试

 

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

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

相关文章

new与delete用法详解与底层原理,operator new与operator delete函数,定位new与内存泄漏介绍等

tips 其实进程运行起来或者说程序运行起来都是去执行函数&#xff0c;任务就是不断的去执行函数。C的入口就是main函数&#xff0c;然后在这个函数当中可能碰到程序某些调用其他函数的语句就去调用其他函数。在全局的区域可以去创建变量&#xff0c;定义函数&#xff0c;但就是…

数据结构-栈,队列

栈&#xff0c;队列 1 知识框架2 栈2.1 顺序栈2.2 链式栈 3 队列3.1 顺序队列3.2 循环队列3.3 链式队列 4 数组4.1 二维数组4.2 特殊数组的压缩存储 1 知识框架 2 栈 定义&#xff1a;只允许在一端进行插入或删除得到线性表 栈的数学性质&#xff1a;n个不同元素进栈&#xff…

phpWord使用模板填充数据:包含表格及嵌套表格(多个表格/循环表格)

参考文档 模板处理 基础使用 安装过程省略&#xff0c;首先加载模板: $templateProcessor new TemplateProcessor(ROOT_PATH . uploads/template/自动生成模板.docx); 完整保存流程 首先&#xff0c;要进行测试&#xff0c;起码能够写一个完整的demo&#xff0c;以下是我测…

实验三---面向对象分析与设计——UML用例图与活动图

一、实验目的&#xff1a; 掌握面向对象分析中用例建模的基本思想&#xff0c;学会识别参与者和用例&#xff0c;掌握UML用例图的绘制方法&#xff0c;学会编写用例说明&#xff1b;了解活动图的作用和组成元素&#xff0c;掌握UML活动图的绘制方法&#xff0c;学会使用活动图来…

秒懂算法 | KMP算法(Java描述)

Knuth-Morris-Pratt 算法&#xff08;简称 KMP&#xff09;是由高德纳&#xff08;Donald Ervin Knuth&#xff09;和沃恩普拉特在1974年构思&#xff0c;同年詹姆斯H莫里斯也独立地设计出该算法&#xff0c;最终三人于1977年联合发表。该算法较Brute-Force算法有较大改进&…

门电路OD门

漏极开路输出的门电路&#xff08;OD门&#xff09; 为了满足输出电平的变换&#xff0c;输出大负载电流&#xff0c;以及实现“线与”功能&#xff0c;将CMOS门电路的输出级做成漏极开路的形式&#xff0c;称为漏极开路输出的门电路&#xff0c;简称OD&#xff08;Open&#x…

【JVM】1. JVM与Java体系结构

文章目录 1.1. 前言&#x1f349;1.2. 参考书目&#x1f349;1.3. Java及JVM简介&#x1f349;1.4. Java发展的重大事件&#x1f349;1.5. 虚拟机与Java虚拟机&#x1f349;1.6. JVM的整体结构&#x1f349;1.7. Java代码执行流程&#x1f349;1.8. JVM的架构模型&#x1f349;…

4. QT中的鼠标键盘事件 --- 鼠标拖拽案例

1. 说明 在QT的控件或者窗口当中&#xff0c;如果对于当前鼠标或者键盘的功能需要自己定义&#xff0c;可以重写父类当中对应虚函数&#xff0c;主要包括以下几个&#xff1a; //键盘按键按下 virtual void keyPressEvent(QKeyEvent *event); //键盘按键抬起 virtual void ke…

为什么C++这么复杂还不被淘汰?

C是一门广泛使用的编程语言&#xff0c;主要用于系统和应用程序的开发。尽管C具有一些复杂的语法和概念&#xff0c;但它仍然是编程界的重量级选手&#xff0c;在编程语言排行榜中一直位居前列。为什么C这么复杂还不被淘汰呢&#xff1f; C有以下优势 1、C具有高性能 C是一门编…

unity进阶学习笔记:photonServer测试

photonServer是由photon发布的一个网络框架&#xff0c;其封装了UDP和TCP通信机制让用户可以直接调用API实现网络游戏通信 1 photonServer下载安装 进入Photon官网的SDK选项&#xff0c;选择下载Server。目前Server版本已经更新到v5&#xff0c;这里我为了和教程保持一致下载…

Unittest接口测试生成报告和日志方法

HTML报告 直接把HTMLTestRunner.py放入工程目录即可报告脚本封装 #HTNL格式报告now datetime.datetime.now().strftime(%Y-%m-%d_%H_%M_%S)htmlreport reportpath "/" now r"result.html"print("测试报告生成地址&#xff1a;%s"% htmlre…

Revit干货 | 系统族、内建族、可载入族一次性搞清楚!

对于使用人数较多的revit软件&#xff0c;其中的许多概念与我们常用的CAD完全不同&#xff0c;以至于让许多工程师觉得revit软件有点高深莫测&#xff0c;不可琢磨&#xff0c;从而有了抗拒心理。 Revit软件中的重要概念&#xff1a; “族”是revit软件中的很重要也很基本的概念…

程序的各种段以及堆栈相关问题

C中一般有三种变量&#xff1a; 局部变量全局变量静态变量 C中一般有五个内存段&#xff1a; 代码段 也叫文本段&#xff0c;包含frequently executed code通常是只读的&#xff08;未了避免程序被错误改写&#xff09;代码段是不包含程序变量&#xff08;如局部变量、全局变…

【数据结构】带头双向链表,真正的六边形战士

文章目录 概要整体架构流程小结 概要 *数据结构中的链表在实际开发中应用非常广泛&#xff0c;但写一个链表并不是一件简单的事情。链表有八种结构&#xff0c;对于刚入门的新手来说&#xff0c;往往会先经历单链表的折磨。 而今天我要讲的带头双向链表非常适合新手学习&#…

C++6.类和对象(下)

1.友元函数&#xff0c;一般现在类的最上面。 2.函数的参数中&#xff0c;如果不改变&#xff0c;尽量加上const修饰。 3.对于自定义类型&#xff0c;使用运算符进行操作基本上都要用运算符重载&#xff0c;但是有些运算符重载会默认自动生成。 4.初始化列表&#xff0c;是成…

【wpf】列表类,用相对源时,如何绑定到子项

前言 在之前的一篇文章 &#xff1a;《【wpf】深度解析&#xff0c;Binding是如何寻找数据源的》https://blog.csdn.net/songhuangong123/article/details/126195727#:~:text%E3%80%90wpf%E3%80%91%E6%B7%B1%E5%BA%A6%E8%A7%A3%E6%9E%90%EF%BC%8CBinding%E6%98%AF%E5%A6%82%E4…

读书|林曦:她把自己的生活,过成了无用但丰盈的美学

时代在以加速度的方式变化&#xff0c;让人难以从容。而当我们陷于横向的比较系统&#xff0c;权衡着卷、躺、润时&#xff0c;也有人在探寻另一条纵向的路——向古人学习&#xff0c;以传统美学关照和滋养当下生活。      立夏之际&#xff0c;水墨画家林曦的新作《无用之…

33岁跳槽无路,濒临绝望之际受贵人指点,成功上岸阿里(测试岗)

写在前面 马上过34岁生日了&#xff0c;和大家聊聊最近的情况&#xff0c;半年前还在迷茫该学什么&#xff0c;怎样才能走出现在的困境&#xff0c;半年后已经成功上岸阿里&#xff0c;感谢在这期间帮助我的每一个人 开始 30多岁工作的时候总是有种力不从心的感觉&#xff0…

网络安全工程师需要考什么证吗?

目前网络安全行业&#xff0c;国内都有哪些证书可以考。 一、CISP-PTE &#xff08;国家注册渗透测试工程师&#xff09; CISP-PTE即注册信息安全渗透测试工程师&#xff0c;该证书由中国信息安全测评中心颁发&#xff0c;证书是国内唯一认可的渗透测试认证&#xff0c;专业性…

AIOps社区低代码项目火热报名中|中科院开源之夏2023,万元现金等你来拿!

活动介绍 开源之夏是由中科院软件所“开源软件供应链点亮计划”发起并长期支持的一项暑期开源活动&#xff0c;旨在鼓励在校学生积极参与开源软件的开发维护&#xff0c;培养和发掘更多优秀的开发者&#xff0c;促进优秀开源软件社区的蓬勃发展&#xff0c;助力开源软件供应链…