Spring 学习笔记《依赖注入》—— 自动注入
发布日期:2021-06-30 14:57:27
浏览次数:2
分类:技术文章
本文共 2691 字,大约阅读时间需要 8 分钟。
Spring 学习笔记
自动注入
属性 autowire
用来设置自动注入的规则,与现有的 bean
匹配,对的上就帮你塞进去。一共5个值。
- byName : 按属性名 (就用它不用想)
- byType : 按属性类型
- constructor : 按构造器的形参类型和现有 bean 匹配(听着就不靠谱)
- default : 按全局属性 (根节点
beans
的default-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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
很好
[***.229.124.182]2024年04月10日 22时05分06秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
ubuntu 更改 gcc g++ 版本
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