IT评测·应用市场-qidao123.com

标题: Spring6梳理9—— 依赖注入之注入对象类型属性 [打印本页]

作者: 大连密封材料    时间: 2024-9-23 19:34
标题: Spring6梳理9—— 依赖注入之注入对象类型属性
目次
9.1  依赖注入之外部注入对象类型属性
9.1.1  创建dept与emp类
9.1.2  创建配置文件
9.1.3  创建测试类
9.1.4  运行结果
9.2  依赖注入之内部注入对象类型
9.3  依赖注入之级联注入对象类型


9.1  依赖注入之外部注入对象类型属性

9.1.1  创建dept与emp类

1.dept类
  1. package com.atguigu.spring6.iocxml.ditest;
  2. //部门类
  3. public class Dept {
  4.     private String dname;
  5.     public String getDname() {
  6.         return dname;
  7.     }
  8.     public void setDname(String dname) {
  9.         this.dname = dname;
  10.     }
  11.     public void info() {
  12.         System.out.println("部门名称是:"+dname);
  13.     }
  14. }
复制代码
 2.emp类
  1. package com.atguigu.spring6.iocxml.ditest;
  2. //员工类
  3. public class Emp {
  4.     private Dept dept;
  5.     private String ename;
  6.     private Integer age;
  7.     public Dept getDept() {
  8.         return dept;
  9.     }
  10.     public void setDept(Dept dept) {
  11.         this.dept = dept;
  12.     }
  13.     public String getEname() {
  14.         return ename;
  15.     }
  16.     public void setEname(String ename) {
  17.         this.ename = ename;
  18.     }
  19.     public Integer getAge() {
  20.         return age;
  21.     }
  22.     public void setAge(Integer age) {
  23.         this.age = age;
  24.     }
  25.     public void work() {
  26.         System.out.println(ename + "工作到了" + age);
  27.         dept.info();
  28.     }
  29. }
复制代码
 由于一个部分有多个员工,因此部分与员工的关系为一对多,以是将唯一的Dept作为引用的bean,外键为
9.1.2  创建配置文件

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3.        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4.        xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
  5.     <bean id="dept" class="com.atguigu.spring6.iocxml.ditest.Dept">
  6.         <property name="dname" value="安保部"></property>
  7.     </bean>
  8.     <bean id="emp" class="com.atguigu.spring6.iocxml.ditest.Emp">
  9.         <property name="ename" value="lucy"></property>
  10.         <property name="age" value="50"></property>
  11.     <!--注入对象类型属性
  12.        private Dept dept;
  13.     -->
  14.         <property name="dept" ref="dept"></property>
  15.     </bean>
  16. </beans>
复制代码
9.1.3  创建测试类

  1. package com.atguigu.spring6.iocxml.ditest;
  2. import org.springframework.context.ApplicationContext;
  3. import org.springframework.context.support.ClassPathXmlApplicationContext;
  4. /**
  5. * @package: com.atguigu.spring6.iocxml.ditest
  6. * @className: TestEmp
  7. * @Description:
  8. * @author: haozihua
  9. * @date: 2024/9/18 11:10
  10. */
  11. public class TestEmp {
  12.     public static void main(String[] args) {
  13.         ApplicationContext context
  14.                 = new ClassPathXmlApplicationContext("bean-ref.xml");
  15.         Emp emp = context.getBean("emp", Emp.class);
  16.         emp.work();
  17.     }
  18. }
复制代码
9.1.4  运行结果


由运行结果可以得出,当实体类出现需要注入对象的情况下,可以使用
<property name="dept" ref="dept"></property>
对对象举行引用,从而在实体类对象中注入另一个实体类对象,使用被注入的对象的方法变量等内容
9.2  依赖注入之内部注入对象类型

  1. <!--    内部注入bean-->
  2.     <bean id="emp2" class="com.atguigu.spring6.iocxml.ditest.Emp">
  3.         <property name="ename" value="mary"></property>
  4.         <property name="age" value="20"></property>
  5.         <!--注入对象类型属性
  6.            private Dept dept;
  7.         -->
  8.         <property name="dept"><!--与实体类保持一致-->
  9.             <bean class="com.atguigu.spring6.iocxml.ditest.Dept">
  10.                 <property name="dname" value="财务部"></property>
  11.             </bean>
  12.         </property>
  13.     </bean>
复制代码
内部注入对象时,需要在<property></property>标签内部设置name,以及内部<bean></bean>标签中的class属性
由于获取Bean是基于getter()和setter()赋值,因此<property></property>标签的name属性值必须与实体类变量保持同等
9.3  依赖注入之级联注入对象类型

  1. <!--    级联注入bean-->
  2.     <bean id="emp3" class="com.atguigu.spring6.iocxml.ditest.Emp">
  3.         <property name="ename" value="李湘"></property>
  4.         <property name="age" value="30"></property>
  5.         <property name="dept" ref="dept3"></property>
  6.         <property name="dept.dname" value="人事部"></property>
  7.     </bean>
复制代码
级联注入对象时,需要注意property的name属性与实体类保持同等,ref必须引用的是xml文件中定义好的外部bean                                                                                              

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 IT评测·应用市场-qidao123.com (https://dis.qidao123.com/) Powered by Discuz! X3.4