企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
[TOC] # 注入对象 在上例中,对Category的name属性注入了"category 1"字符串 在本例中 ,对Product对象,注入一个Category对象。 ## 步骤 1 : 先运行,看到效果,再学习 先将完整的 spring 项目(向老师要相关资料),配置运行起来,确认可用之后,再学习做了哪些步骤以达到这样的效果。 ## 步骤 2 : 模仿和排错 在确保可运行项目能够正确无误地运行之后,再严格照着教程的步骤,对代码模仿一遍。 模仿过程难免代码有出入,导致无法得到期望的运行结果,此时此刻通过比较**正确答案** ( 可运行项目 ) 和自己的代码,来定位问题所在。 采用这种方式,**学习有效果,排错有效率**,可以较为明显地提升学习速度,跨过学习路上的各个槛。 ## 步骤 3 : Product.java Product类中有对Category对象的setter getter > 产品带有类别属性,一个产品只属于一个类别。 ~~~ package com.dodoke.pojo; public class Product { private int id; private String name; private int number; private double price; private Category category; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getNumber() { return number; } public void setNumber(int number) { this.number = number; } public double getPrice() { return price; } public void setPrice(double price) { this.price = price; } public Category getCategory() { return category; } public void setCategory(Category category) { this.category = category; } } ~~~ ## 步骤 4 : applicationContext.xml 在创建Product的时候注入一个Category对象 注意,这里要使用ref来注入另一个对象 ~~~ <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd"> <bean name="c" class="com.dodoke.pojo.Category"> <property name="name" value="category 1" /> </bean> <bean name="product" class="com.dodoke.pojo.Product"> <property name="name" value="Apple Watch" /> <property name="number" value="2" /> <property name="price" value="8800" /> <property name="category" ref="c" /> </bean> </beans> ~~~ > property后面紧跟着的name是类中对象的属性name。 ## 步骤 5 : TestSpring ~~~ package com.dodoke.test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import com.dodoke.pojo.Category; import com.dodoke.pojo.Product; public class TestSpring { public static void main(String[] args) { // 读取applicationContext.xml配置文件 ApplicationContext context = new ClassPathXmlApplicationContext(new String[] { "applicationContext.xml" }); // 在xml文件中,bean标签的name是c,获取到name为c的bean标签里面的内容强转为Category类型 Category c = (Category) context.getBean("c"); System.out.println(c.getName()); Product product = (Product) context.getBean("product"); System.out.println(product.getName()); System.out.println(product.getNumber()); System.out.println(product.getPrice()); System.out.println(product.getCategory().getName()); } } ~~~ 通过Spring拿到的Product对象已经被注入了Category对象了。 运行结果如下: ![](https://box.kancloud.cn/afd35c5901459684d8dd6a8cbb9780c3_448x187.png) > 重点关注:一个类的成员变量有引用类型的变量的时候,这个引用类型的变量如何初始化,通过ref引入。