【Spring 从0开始】IOC容器的Bean管理 - 基于XML,注入外部bean、内部bean和级联赋值

简介: 【Spring 从0开始】IOC容器的Bean管理 - 基于XML,注入外部bean、内部bean和级联赋值

一、注入外部 bean


如果你要引用外部 bean,就要先注入外部bean。比如常见的web项目中的service、dao 这2层,通过 service 去调用 dao,这个过程就叫引入外部 bean。


现在有从左至右的3段代码,分别是 service、dao、dao接口的实现类。


1268169-20210629081924242-481653540.png


现在想要在 service 中调用 dao 里的 update() 方法,用之前传统的方法,可以 new:


1268169-20210629082324742-355912578.png


现在通过XML配置文件进行操作,用法还是跟之前文章讲到的一样,只不过之前注入属性都是用的 String,现在注入的是对象。


1. service 中的操作


在 UserService 里创建 UserDao 类型的属性,生成 set 方法。


1268169-20210629083043417-1019783076.png


2. 配置 bean 文件


新建了一个 bean2.xml 文件,在这里创建 service 和 dao 的对象,然后在 userServie 里注入 userDao 对象。


1268169-20210629083821101-1456004745.png


  • name:是属性名称,就是上面在 UserService 创建的 UserDao 类型的属性 userDao。
  • ref:之前注入的时候用的是 value,现在注入对象用的 ref,值就是要引用的对象 bean 标签里 id,这里就是 userDaoImpl。

写一个测试代码,运行正确的话,应该可以看到 service 和 dao 这2层代码里的 print 输出。


1268169-20210629084642765-80052049.png


二、注入内部 bean 和级联赋值


内部bean:只有将 bean 用作另一个 bean 的属性时,才能将 bean 声明为内部 bean。

实体类之间经常遇到 1对多关系,比如 部门 和 员工。 部门是 1,员工是多。如何表示这种关系?


1. bean 中的操作


新建2个类,分别是 员工类 Employee、部门类 Department,都有着自己的属性。


1268169-20210629124010665-1345149839.png


员工是属于部门的,要表示这个关系,在员工类 Employee 里,加上部门对象 Department 类型的属性 department。


1268169-20210629124207995-100186323.png


2. 配置 bean 文件


新建一个 bean3.xml,这里也可以使用上述外部 bean的方式,不过下面使用的内部 bean 的写法,通过在对象属性里再嵌套一个对象。


1268169-20210629125008775-850081011.png


测试一下,在 Employee 类里增加一个 add()方法,在 Department 类里增加 toString() 方法打印。


1268169-20210629125856972-1928101282.png


最后修改下测试方法,运行一下。


1268169-20210629125948656-129462405.png


结果打印出了,在xml里注入的值。

相关文章
|
7月前
|
XML Java 测试技术
《深入理解Spring》:IoC容器核心原理与实战
Spring IoC通过控制反转与依赖注入实现对象间的解耦,由容器统一管理Bean的生命周期与依赖关系。支持XML、注解和Java配置三种方式,结合作用域、条件化配置与循环依赖处理等机制,提升应用的可维护性与可测试性,是现代Java开发的核心基石。
|
XML Java 测试技术
Spring IOC—基于注解配置和管理Bean 万字详解(通俗易懂)
Spring 第三节 IOC——基于注解配置和管理Bean 万字详解!
990 26
|
11月前
|
XML 人工智能 Java
Spring IOC 到底是什么?
IOC(控制反转)是一种设计思想,主要用于解耦代码,简化依赖管理。其核心是将对象的创建和管理交给容器处理,而非由程序直接硬编码实现。通过IOC,开发者无需手动new对象,而是由框架负责实例化、装配和管理依赖对象。常见应用如Spring框架中的BeanFactory和ApplicationContext,它们实现了依赖注入和动态管理功能,提升了代码的灵活性与可维护性。
261 1
|
XML Java 数据格式
Spring IoC容器的设计与实现
Spring 是一个功能强大且模块化的 Java 开发框架,其核心架构围绕 IoC 容器、AOP、数据访问与集成、Web 层支持等展开。其中,`BeanFactory` 和 `ApplicationContext` 是 Spring 容器的核心组件,分别定位为基础容器和高级容器,前者提供轻量级的 Bean 管理,后者扩展了事件发布、国际化等功能。
327 18
|
XML Java 数据格式
京东一面:spring ioc容器本质是什么? ioc容器启动的步骤有哪些?
京东一面:spring ioc容器本质是什么? ioc容器启动的步骤有哪些?
|
XML Java 数据格式
【SpringFramework】Spring IoC-基于XML的实现
本文主要讲解SpringFramework中IoC和DI相关概念,及基于XML的实现方式。
328 69
|
Java 容器 Spring
什么是Spring IOC 和DI ?
IOC : 控制翻转 , 它把传统上由程序代码直接操控的对象的调用权交给容 器,通过容器来实现对象组件的装配和管理。所谓的“控制反转”概念就是对组件对象控制权的转 移,从程序代码本身转移到了外部容器。 DI : 依赖注入,在我们创建对象的过程中,把对象依赖的属性注入到我们的类中。
|
Java Spring 容器
【SpringFramework】Spring IoC-基于注解的实现
本文主要记录基于Spring注解实现IoC容器和DI相关知识。
263 21
|
12月前
|
Android开发 开发者
Android自定义View之不得不知道的文件attrs.xml(自定义属性)
本文详细介绍了如何通过自定义 `attrs.xml` 文件实现 Android 自定义 View 的属性配置。以一个包含 TextView 和 ImageView 的 DemoView 为例,讲解了如何使用自定义属性动态改变文字内容和控制图片显示隐藏。同时,通过设置布尔值和点击事件,实现了图片状态的切换功能。代码中展示了如何在构造函数中解析自定义属性,并通过方法 `setSetting0n` 和 `setbackeguang` 实现功能逻辑的优化与封装。此示例帮助开发者更好地理解自定义 View 的开发流程与 attrs.xml 的实际应用。
345 2
Android自定义View之不得不知道的文件attrs.xml(自定义属性)
|
XML 前端开发 Java
讲解SSM的xml文件
本文详细介绍了SSM框架中的xml配置文件,包括springMVC.xml和applicationContext.xml,涉及组件扫描、数据源配置、事务管理、MyBatis集成以及Spring MVC的视图解析器配置。
367 1