控制反转
将对象的创建交给 spring 我们负责直接调用 spring 创建的对象,这样的好处在于便于操作和管理创建的对象。
依赖注入
说到将对象的创建交给 sping 容器,那么,spring 创建对象时对象的属性值应该怎么修改呢,这里就需要我们的依赖注入。依赖注入的方式分为两种:配置文件注入 和 注解注入
配置文件注入
配置文件注入就是创建一个 spring 的配置文件,再在需要创建的 bean 对象里面进行属性的修改注入。在此之前我们需要使用 maven 创建一个 项目并且在 pom 文件中导入
spring-context、spring-beans、spring-expression、spring-core 四个外部坐标。
导入之后创建一个 spring 的配置文件
spring 文件创建好了之后,我们看看 spring 配置文件的一个层级
<bean>标签:
- id 属性: 容器中 bean 实例的唯一标识,不允许重复
- class 属性 : 需要实例化的 bean 的全限类命
- scope 属性 : Bean 的作用范围,默认为 Singleton 和 prototype
- <property> 标签:bean 的一个子标签 作用为注入属性
- name 属性 : 属性的名称
- value 属性 : 注入普通的属性值(数值型 和 String型)
- ref 属性 : 注入对象引用值
- < list > 标签 : 注入list 集合
- <map> 标签 : 注入 map 集合
- <entry> 标签 :map 的一个子标签 ,里面有属性key 和 value 负责注入属性值
- <properties> 标签 :
在了解完xml 的一些常用标签后,我们去创建一个注入的例子。首先创建一个 Person 类,并且给他们定义变量参数,并且提供set方法。如下
public class Person {
private Map map;
private List list;
private String name;
private User user;
public void setUser(User user) {
this.user = user;
}
public Person(Map map, List list, String name) {
this.map = map;
this.list = list;
this.name = name;
}
public Person() {
}
public void setMap(Map map) {
this.map = map;
}
public void setList(List list) {
this.list = list;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "Person{" +
"map=" + map +
", list=" + list +
", name='" + name + '\'' +
'}';
}
}
再在我们的 spring 配置文件中去注入他的值,如图
我们在注入时,如果注入的属性值是常量值,则使用value去传递,如果使用的引用的对象,则使用ref去传递。