【Spring 从0开始】IOC容器的Bean管理 - 基于XML,注入外部bean、内部bean和级联赋值
一、注入外部 bean
如果你要引用外部 bean,就要先注入外部bean。比如常见的web项目中的service、dao 这2层,通过 service 去调用 dao,这个过程就叫引入外部 bean。
现在有从左至右的3段代码,分别是 service、dao、dao接口的实现类。
现在想要在 service 中调用 dao 里的 update() 方法,用之前传统的方法,可以 new:
现在通过XML配置文件进行操作,用法还是跟之前文章讲到的一样,只不过之前注入属性都是用的 String,现在注入的是对象。
1. service 中的操作
在 UserService 里创建 UserDao 类型的属性,生成 set 方法。
2. 配置 bean 文件
新建了一个 bean2.xml 文件,在这里创建 service 和 dao 的对象,然后在 userServie 里注入 userDao 对象。
- name:是属性名称,就是上面在 UserService 创建的 UserDao 类型的属性 userDao。
- ref:之前注入的时候用的是 value,现在注入对象用的 ref,值就是要引用的对象 bean 标签里 id,这里就是 userDaoImpl。
写一个测试代码,运行正确的话,应该可以看到 service 和 dao 这2层代码里的 print 输出。
二、注入内部 bean 和级联赋值
内部bean:只有将 bean 用作另一个 bean 的属性时,才能将 bean 声明为内部 bean。
实体类之间经常遇到 1对多关系,比如 部门 和 员工。 部门是 1,员工是多。如何表示这种关系?
1. bean 中的操作
新建2个类,分别是 员工类 Employee、部门类 Department,都有着自己的属性。
员工是属于部门的,要表示这个关系,在员工类 Employee 里,加上部门对象 Department 类型的属性 department。
2. 配置 bean 文件
新建一个 bean3.xml,这里也可以使用上述外部 bean的方式,不过下面使用的内部 bean 的写法,通过在对象属性里再嵌套一个对象。
测试一下,在 Employee 类里增加一个 add()方法,在 Department 类里增加 toString() 方法打印。
最后修改下测试方法,运行一下。
结果打印出了,在xml里注入的值。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
2020-06-29 【python】我OUT了,原来函数中的冒号和箭头是这么回事
2020-06-29 【HttpRunner v3.x】笔记 ——5. 测试用例-config
2020-06-29 【HttpRunner v3.x】笔记 ——4. 测试用例-结构解析