一、注入外部 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里注入的值。