个人主页:BoBooY的CSDN博客_Java领域博主

前言:上节我带大家快速上手了Spring,这一节我们讲解Spring中的依赖注入(DI),废话不多说,直接上正文!

文章目录
依赖注入(DI)4.1、概念4.2、构造器注入4.3、Set方式注入【重点】4.3.1、环境搭建4.3.2、不同类型值的注入方式1、常量注入2、Bean注入3、数组注入4、List注入5、Map注入6、set注入7、Null注入8、Properties注入
4.3.3、P命名空间注入4.3.4、c命名空间注入
4.4、Bean的作用域4.4.1、单例模式(Spring默认机制)4.4.2、原型模式4.4.3、request、session、application

依赖注入(DI)
4.1、概念
依赖注入(Dependency Injection,DI)。依赖 : 指Bean对象的创建依赖于容器注入 : 指Bean对象的所有属性 , 由容器来注入(设置和装配) .
4.2、构造器注入
在上一节的IOC创建方式中进行了讲解:https://blog.csdn.net/qq_58233406/article/details/127244071
4.3、Set方式注入【重点】
4.3.1、环境搭建
复杂类型
Address.java
public class Address {

private String address;

public String getAddress() {
return address;
}

public void setAddress(String address) {
this.address = address;
}
}
123456789101112
Student.java
package com.kuang.pojo;

import java.util.List;
import java.util.Map;
import java.util.Properties;
import java.util.Set;

public class Student {

private String name;
private Address address;
private String[] books;
private List hobbys;
private Map card;
private Set games;
private String wife;
private Properties info;

public void setName(String name) {
this.name = name;
}

public void setAddress(Address address) {
this.address = address;
}

public void setBooks(String[] books) {
this.books = books;
}

public void setHobbys(List hobbys) {
this.hobbys = hobbys;
}

public void setCard(Map card) {
this.card = card;
}

public void setGames(Set games) {
this.games = games;
}

public void setWife(String wife) {
this.wife = wife;
}

public void setInfo(Properties info) {
this.info = info;
}

@Override
public String toString() {
return “Student{” +
“name='” + name + ‘\” +
“, address=” + address +
“, books=” + Arrays.toString(books) +
“, hobbys=” + hobbys +
“, card=” + card +
“, games=” + games +
“, wife='” + wife + ‘\” +
“, info=” + info +
‘}’;
}
}
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
常量注入

123
测试
public class StudentTest {
@Test
public void test(){
ApplicationContext context = new ClassPathXmlApplicationContext(“beans.xml”);
Student student = (Student) context.getBean(“student”);
System.out.println(student.getName());
}
}
12345678
4.3.2、不同类型值的注入方式
1、常量注入

123
2、Bean注入
注意点:这里的值是一个引用,ref


12345678
3、数组注入

西游记
红楼梦
水浒传

1234567891011
4、List注入 听歌
看电影
爬山
1234567
5、Map注入

123456
6、set注入
LOL
BOB
COC
1234567
7、Null注入 1
8、Properties注入 20190604 小明 1234567
4.3.3、P命名空间注入
需要在头文件中加入约束文件
导入约束 : xmlns:p=”http://www.springframework.org/schema/p”
1


12
4.3.4、c命名空间注入
需要在头文件中加入约束文件
导入约束 : xmlns:c=”http://www.springframework.org/schema/c”
1


12
注意:一定要写上带参构造
解决:把有参构造器加上,这里也能知道,c 就是所谓的构造器注入!
4.4、Bean的作用域
​ 在Spring中,那些组成应用程序的主体及由Spring IoC容器所管理的对象,被称之为bean。简单地讲,bean就是由IoC容器初始化、装配及管理的对象 .

4.4.1、单例模式(Spring默认机制)

1
4.4.2、原型模式

1
4.4.3、request、session、application
request、session作用域仅在基于web的应用中使用(不必关心你所采用的是什么web应用框架),只能用在基于web的SpringApplicationContext环境。

尾言:创作不易,如果本文的内容对您有帮助,还望客官可以三连支持一下博主,????(点赞)+✏️(评论)+⭐️(收藏)是我创作的巨大动力!

文章知识点与官方知识档案匹配,可进一步学习相关知识Java技能树首页概览80657 人正在系统学习中