Spring 学习笔记《依赖注入》—— 自动注入
发布日期:2021-06-30 14:57:27 浏览次数:2 分类:技术文章

本文共 2691 字,大约阅读时间需要 8 分钟。

Spring 学习笔记

自动注入

属性 autowire 用来设置自动注入的规则,与现有的 bean 匹配,对的上就帮你塞进去。一共5个值。

在这里插入图片描述|

  • byName : 按属性名 (就用它不用想)
  • byType : 按属性类型
  • constructor : 按构造器的形参类型和现有 bean 匹配(听着就不靠谱)
  • default : 按全局属性 (根节点 beansdefault-autowire="byName" 属性)处理
  • no : 不自动注入

/SpringIoC/src/applicationContext.xml

/SpringIoC/src/com/jerry/test/TestSpringIoC.java

package com.jerry;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;import com.jerry.entity.MyCollection;import com.jerry.entity.Student;import com.jerry.entity.Teacher;import com.jerry.entity.Textbook;public class TestSpringIoC {
public static void main(String[] args) {
// 获取Spring容器 ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml"); // byName Teacher teacherDIByName= (Teacher)context.getBean("teacherDIByName");// 从容器中获取对象 System.out.println("byName 自动注入,创建 bean : " + teacherDIByName.toString());// 查看结果 // byType :因为按类型来找,如果同一类型的 bean 不止一个,就会出翔 Teacher teacherDIByType= (Teacher)context.getBean("teacherDIByType");// 从容器中获取对象 System.out.println("byType 自动注入,创建 bean : " + teacherDIByType.toString());// 查看结果 // constructor :按构造器形参类型与 bean 匹配 Teacher teacherDiConstructor= (Teacher)context.getBean("teacherDiConstructor");// 从容器中获取对象 System.out.println("constructor 自动注入 : " + teacherDiConstructor.toString());// 查看结果 }}

我以为 constructor自动textbook 应该有值,但是并没有。

byName自动,创建 bean : Teacher [name=李老师, age=27, adder=鸟不拉屎村, tel=10086, salary=5000.0, textbook=课本 [name=思想品德, level=小学二年级]]byType自动,创建 bean : Teacher [name=李老师, age=27, adder=鸟不拉屎村, tel=10086, salary=5000.0, textbook=课本 [name=思想品德, level=小学二年级]]constructor自动,创建 bean : Teacher [name=赵老师, age=99, adder=太远太远村, tel=10010, salary=9999.0, textbook=null]

因为我在 Teacher 的构造函数里竟然没有赋值。加上 this.textbook = textbook; 就好了。真是忙糊涂了

// textbook 注入进来了,但是我没赋值	public Teacher(Textbook textbook){
this.name = "赵老师"; this.age = 99; this.adder = "太远太远村"; this.tel = "10010"; this.salary = 9999d; } // 加上 this.textbook = textbook; 就好了 public Teacher(Textbook textbook){
this.name = "赵老师"; this.age = 99; this.adder = "太远太远村"; this.tel = "10010"; this.salary = 9999d; this.textbook = textbook; }

看看效果

byName 自动注入,创建 bean : Teacher [name=李老师, age=27, adder=鸟不拉屎村, tel=10086, salary=5000.0, textbook=课本 [name=语文课本, level=小学一年级]]byType 自动注入,创建 bean : Teacher [name=李老师, age=27, adder=鸟不拉屎村, tel=10086, salary=5000.0, textbook=课本 [name=语文课本, level=小学一年级]]constructor 自动注入 : Teacher [name=赵老师, age=99, adder=太远太远村, tel=10010, salary=9999.0, textbook=课本 [name=语文课本, level=小学一年级]]

转载地址:https://jerryjin.blog.csdn.net/article/details/86578695 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Spring 学习笔记《依赖注入》—— Bean 的作用域 scope
下一篇:Spring 学习笔记《依赖注入》—— 扫描配置文件注入

发表评论

最新留言

很好
[***.229.124.182]2024年04月10日 22时05分06秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

ubuntu 更改 gcc g++ 版本 2021-07-04
ERROR: Package ‘imageio‘ requires a different Python: 2.7.13 not in ‘>=3.5‘ 2021-07-04
ValidationError: Value for sha256 cannot be None. 2021-07-04
38. 外观数列 2021-07-04
Java开发对泛型的认识和理解 2021-07-04
Android开发之Context认识和运用 2021-07-04
Android数据库GreenDao的使用完全解析 2021-07-04
简单选择排序 2021-07-04
冒泡排序 2021-07-04
快速排序 2021-07-04
【Java习题】 -- 设计⼀个⽅法,将⼀个字符串中的⼤⼩写字⺟翻转 2021-07-04
【大数据开发】Java基础-总结1-可变参数的注意点 2021-07-04
【Java习题】 -- 设计⼀个⽅法,将⼀个数组中的元素倒序排列(注意,不是降序) 2021-07-04
【Java习题】(难)设计⼀个⽅法,找出⼀个整型数组中的第⼆⼤的值 2021-07-04
【Java习题】-- 已知⽅法 public static int[] combine(int[] arr1, int[] arr2) 的作⽤是,合并 两个数组,并对合并后的数组进⾏升序排序 2021-07-04
【Java习题】(难)已知⽅法 public static int[] delete(int[] arr, int ele) 的作⽤是删除数组中第 ⼀次出现的ele元素,并返回删除后的数组 2021-07-04
【大数据开发】Java基础-总结2-面向对象与面向过程的区别 2021-07-04
【大数据开发】Java基础-总结3-面向对象的特点和注意点 2021-07-04
MySQL5.7版本修改了my.ini配置文件后mysql服务无法启动问题 2021-07-04
【大数据开发】Java基础 -总结21-Hashmap和HashTable的区别 2021-07-04