代码地址:spring2.1.zip - 蓝奏云文件大小:15.1 K|https://www.lanzouw.com/imlEwvptwre

Set方法注入的原理是spring先通过指定id的类的无参构造函数创建对象,然后通过set方法进行赋值。所以,使用Set方法注入时必须保证类中定义了无参构造函数和Set方法。

1、定义Category和Product类,给属性设置SetXYZ()方法,spring会通过set方法来给对象赋值

package com.how2j.pojo;public class Category {public int getId() {return id;}public void setId(int id) {this.id = id;}@Overridepublic String toString() {return "Category{" +"id=" + id +", name='" + name + '\'' +'}';}public String getName() {return name;}public void setName(String name) {this.name = name;}private int id;private String name;
}
package com.how2j.pojo;public class Product {//普通属于类型private int id;private String name;//引用类型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 Category getCategory() {return category;}public void setCategory(Category category) {this.category = category;}@Overridepublic String toString() {return "Product{" +"id=" + id +", name='" + name + '\'' +", category=" + category +'}';}
}

2、编写xml文件

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"><!--    先定义Category类的jave bean,然后才能在Product中注入Category对象-->
<!--    使用propertiy注入属性时,对应的类必须有setXYZ方法, 这里的name的值必须是对象类里的setXYZ的xYZ,注意X必须是小写--><bean id="c" class="com.how2j.pojo.Category">
<!--        如果是普通属性,就使用value进行赋值--><property name="id" value="1"/><property name="name" value="category 1"/></bean><bean id="p" class="com.how2j.pojo.Product"><property name="name" value="product1"/>
<!--        如果是引用类型的属性,就使用ref来注入引用对象, 这里c是定义的的其他的bean的标识,spring会自动创建一个c类型的对象,然后使用setXYZ方法传入到p中--><property name="category" ref="c"/></bean>
</beans>

3、测试

package test;import com.how2j.pojo.Category;
import com.how2j.pojo.Product;
import org.junit.jupiter.api.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;public class TestSpring {@Test//spring的控制翻转public void test1(){ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml" );Category c = (Category) context.getBean("c");System.out.println(c);}@Test//测试spring的属性注入public void test2(){ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml" );Product p = (Product) context.getBean("p");System.out.println(p);}
}

补充:目录结构如下:

2.1、spring属性注入-Set方法注入相关推荐

  1. Spring官网阅读(二)(依赖注入及方法注入)

    上篇文章我们学习了官网中的1.2,1.3两小节,主要是涉及了容器,以及Spring实例化对象的一些知识.这篇文章我们继续学习Spring官网,主要是针对1.4小节,主要涉及到Spring的依赖注入.虽 ...

  2. 使用属性的setter方法注入

    使用属性的setter方法注入 将A类的一个Bean看作类B的一个属性,并类B通过setter方法实现Bean的实例化,即声明变量. 使用setter方法注入是Spring框架中最主流的注入方式,利用 ...

  3. Spring(2)bean注入--Set方法注入

    Spring(2)bean注入–Set方法注入 Set 方法注入 新建一个空的 maven项目. 导入依赖 <properties><project.build.sourceEnco ...

  4. 依赖注入_set方法注入_构造器注入

    属性注入 属性注入即通过 setter 方法注入Bean 的属性值或依赖的对象 属性注入使用 <property> 元素, 使用 name 属性指定 Bean 的属性名称,value 属性 ...

  5. Spring--依赖注入 or 方法注入 ?

    依赖注入 我们在 Spring - 循环依赖 中谈到 Spring 的两种依赖注入方式 构造器注入 属性注入(setter注入也归属于此) @Service public class HelloSer ...

  6. Spring4.x(11)依赖注入-setter方法注入

    依赖注入-setter方法注入 通过无参构造函数+setter方法注入. 一.编写CustomerDao接口 package com.yiidian.dao; /*** * @author http: ...

  7. java的lookup方法_深入理解Spring中的Lookup(方法注入)

    前言 本文主要给大家介绍了关于Spring中Lookup(方法注入)的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍: 在使用Spring时,可能会遇到这种情况:一个单例的Be ...

  8. Spring方法注入 @Lookup注解使用

    情景分析 在Spring的诸多应用场景中bean都是单例形式,当一个单利bean需要和一个非单利bean组合使用或者一个非单利bean和另一个非单利bean组合使用时,我们通常都是将依赖以属性的方式放 ...

  9. Spring属性注入DI

    1.构造方法注入(只需提供一个构造方法) javabean 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 package com.mickeymouse.ioc; ...

最新文章

  1. docker启动远程管理接口
  2. Java6.0中Comparable接口与Comparator接口详解
  3. Lua 通过 alien 库调用 zlib 压缩/解压
  4. python数字从大到小排列_Python练习题 005:三个数字由大到小排序输出
  5. 通俗易懂,常用线程池执行的-流程图
  6. 使用Maven和WebLogic 12c开发Java EE应用程序
  7. 使用OpenCV3处理图像
  8. 一个报文的路由器之旅_一个报文的路由器之旅
  9. python判断奇数_python 中x%2 x1 判断偶数奇数 性能对比
  10. python随机化序列与设置随机种子
  11. anaconda哪个版本是 python3.6_windows10(64位)Anaconda3+Python3.6搭建Tensorflow(cpu版本)及keras...
  12. php双线切换线路,双线路策略路由和脚本备份切换
  13. SQL Server提取字段中的所有数字
  14. Programming WCF Services中文翻译(3)-契约
  15. torchtext 中文语料加载
  16. R语言入门之R与RStudio的详细安装过程(图文很详细哦!!!)
  17. 《每日一题》NO.23:谈谈对数字集成电路工艺的认识
  18. 拯救者Y7000(2018)装黑苹果及90%驱动
  19. 《一个会写诗的程序员》 东海光剑
  20. 子组件向父组件传参的几种方法

热门文章

  1. 1.9 Java 9增强的自动资源管理
  2. 1098 Insertion or Heap Sort (25 分)【难度: 中 / 插入排序 堆排序 堆排序不会未完成】
  3. P3805 【模板】manacher 算法【马拉车】
  4. Linux的crontab任务调度
  5. sql 199标准 连接查询
  6. jQuery的each()方法
  7. hive hql文档_30分钟入门 Hive SQL(HQL 入门篇)
  8. 面试官 100% 会严刑拷打的 CMS 垃圾回收器,下次面试就拿这篇文章怼回去!
  9. pandas教程:pandas主要功能详解
  10. java基础(十) 数组类型