# 注入对象
在上例中,对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引入。
- Maven
- 介绍
- 下载与介绍
- 仓库
- Eclipse中的Mavenu创建
- eclipse下创建maven风格的Java项目
- 添加jar包
- 创建Maven风格的Java web项目
- 创建SSM项目
- 导入Maven项目
- Mybatis
- 框架介绍
- Mybatis 简单实现
- 使用Mybatis进行CRUD操作
- 优化配置文件
- 表字段名和实体类属性名不同的解决方法
- 一对一关联
- 一对多关联
- Spring
- 注入对象
- 注解方式IOC/DI
- AOP
- 注解方式AOP
- 注解方式测试
- Spring MVC
- Hello,SpringMVC
- 视图定位
- 注解方式
- 接收表单数据
- 客户端跳转
- Session
- 中文问题
- 上传文件
- SSM整合
- 整合步骤
- 分页
- PageHelper
- 连接池
- CRUD
- 事务管理
- JSON