Bean 的装配可以理解为依赖关系注入,Bean 的装配方式也就是 Bean 的依赖注入方式。 Spring 容器支持多种形式的 Bean 的装配方式,如基于 XML 的 Bean 装配、基于 Annotation(注解) 的 Bean 装配和自动装配等。
依赖注入(DI)
DI(Dependency Injection),即“依赖注入”:组件之间依赖关系由容器在运行期决定,形象的说,即由容器动态的将某个依赖关系注入到组件之中。依赖注入的目的并非为软件系统带来更多功能,而是为了提升组件重用的频率,并为系统搭建一个灵活、可扩展的平台。通过依赖注入机制,我们只需要通过简单的配置,而无需任何代码就可指定目标需要的资源,完成自身的业务逻辑,而不需要关心具体的资源来自何处,由谁实现。
依赖:classA 类中含有 classB 的实例,在 classA 中调用 classB 的方法完成功能,即 classA 对 classB 有依赖。
理解DI的关键是:“谁依赖谁,为什么需要依赖,谁注入谁,注入了什么”,那我们来深入分析一下:
-
谁依赖于谁:当然是应用程序依赖于IoC容器;
-
为什么需要依赖:应用程序需要IoC容器来提供对象需要的外部资源;
-
谁注入谁:很明显是IoC容器注入应用程序某个对象,应用程序依赖的对象;
-
注入了什么:就是注入某个对象所需要的外部资源(包括对象、资源、常量数据)。
依赖注入(DI)是实现IOC控制反转的一种方式,它就是由IoC容器在运行期间,动态地将某种依赖关系注入到对象之中。DI向类里面的属性中设置值,它不能单独存在,需要在IoC的基础上进行DI。
注入分类
bean 实例在调用无参构造器创建了空值对象后,就要对 bean对象的属性进行初始化。初始化是由容器自动完成的,称为注入。
根据注入方式的不同,常用的有两类:设值注入、构造注入。
构造函数注入
指 IoC 容器使用构造函数注入被依赖的实例。可以通过调用带参数的构造函数实现依赖注入,每个参数代表一个依赖。
setter 注入(又称设值注入)
要求被注入的属性 , 必须有set方法 , set方法的方法名由set + 属性首字母大写 , 如果属性是boolean类型 , 没有set方法 , 是 is .
编写测试pojo类
Address.java
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<String> hobbys;
private Map<String,String> card;
private Set<String> games;
private String wife;
private Properties info;
public void setName(String name) {
this.name = name;
}
public void setAddress(Address address) {
this.address = address;
}