注入:通过 Spring 工厂及配置文件,为所创建对象的成员变量赋值。
为什么要注入?
-
通过编码的方式,为成员变量进行赋值,存在耦合。
-
注入的好处:解耦合。
public void test4() {
ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext(“/applicationContext.xml”);
Person person = (Person) ctx.getBean(“person”);
// 通过代码为变量赋值, 存在耦合, 如果我们以后想修改变量的值, 需要修改代码, 重新编译
person.setId(1);
person.setName(“zhenyu”);
System.out.println(person);
}
如何进行注入[开发步骤]
-
类的成员变量提供 set get 方法
-
配置 spring 的配置文件
10
yusael
Spring 底层通过调用对象属性对应的 set 方法,完成成员变量的赋值,这种方式也称为 Set注入。
==========================================================================
Set注入的变量类型:
- JDK内置类型
8种基本类型 + String、数组类型、set集合、list集合、Map集合、Properties集合。
- 用户自定义类型
针对于不同类型的成员变量,在<property
标签中,需要嵌套其他标签:
xxxxx
String+8种基本类型
10
yusael
数组
abc@qq.com
123@qq.com
hello@qq.com
Set集合
138xxxxxxxxxx
139xxxxxxxxxx
138xxxxxxxxxx
List集合
China
Earth
hell
Map集合
hello
12312312312
world
21314214214
Properites
value1
value2
value3
复杂JDK类型(Date、…)
需要程序员自定义类型转换器,处理。
第一种方式
[开发步骤]:
-
为成员变量提供 set get 方法
-
配置文件中进行注入(赋值)
第二种方式
第⼀种赋值方式存在的问题:
-
配置文件代码冗余;
-
被注入的对象 (UserDAO)多次创建,浪费(JVM)内存资源。
[开发步骤]:
-
为成员变量提供 set get 方法;
-
配置文件中进行配置;
Spring4.x 废除了 <ref local=""/>
基本等效 <ref bean=""/>
;
基于属性的简化
JDK 类型注入:
10
JDK类型注入简化:value
属性只能简化 8种基本类型 + String 注入标签;
用户自定义类型注入:
用户自定义类型注入简化:
基于p命名空间的简化
JDK 类型注入:
10
yusael
JDK 类型注入 - 基于p命名空间的简化。
<bean id=“person” name=“p” class=“com.yusael.basic.Person”
p:name=“yusael” p:id=“10”/>
用户自定义类型注入:
用户自定义类型注入 - 基于p命名空间的简化。
<bean id=“userService” class=“com.yusael.service.UserServiceImpl”
p:userDAO-ref=“userDAO”/>
=======================================================================
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)
![img](https://img-blog.csdnimg.cn/img_convert/d90b393f75c23155dd0fd673a7d64f9d.jpeg)
最后
学习视频:
大厂面试真题:
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
图片转存中…(img-xcm9Jwm4-1713541068843)]
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)
![img](https://img-blog.csdnimg.cn/img_convert/d90b393f75c23155dd0fd673a7d64f9d.jpeg)
最后
学习视频:
[外链图片转存中…(img-Ule6XzUM-1713541068845)]
大厂面试真题:
[外链图片转存中…(img-89VEYxM2-1713541068847)]
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!